home *** CD-ROM | disk | FTP | other *** search
/ Scene Storm / Scene Storm - Volume 1.iso / coding / asm / demos / outcastmag / outcastpack_v1.02.src < prev    next >
Text File  |  1980-01-06  |  55KB  |  2,608 lines

  1.  
  2. *******************- OUTCAST PACK MAG CODE (C) PHIL!95/NEO -*****************
  3.  
  4.     section outcastcode,code_c
  5.  
  6.     incdir    'scene1:coding/asm/demos/exsyslib/'
  7.     include    'include/hardware/exsys_takeover.s' ;1st codeline!
  8.  
  9.     Incdir    scene1:coding/asm/demos/outcastmag/
  10.     move.l    _OSVBR(a4),_vbr
  11.  
  12. start:    movem.l a0-a6/d1-d7,-(a7)
  13.     move.l #$dff000,a0
  14.     move.l #restvars,a1
  15.     move.w $1c(a0),orig_inten(a1)
  16.     move.w $1e(a0),orig_intreq(a1)
  17.     move.w $02(a0),orig_dmacon(a1)
  18.     move.l    _vbr,a2
  19.     move.l $6c(a2),orig_lev3(a1)
  20.     move.l $68(a2),orig_lev2(a1)
  21.  
  22.     jsr routine
  23.  
  24.     move.w #$7fff,$dff09a
  25.     move.w #$7fff,$dff09c
  26.     move.w #$7fff,$dff096
  27.     move.l #restvars,a1
  28.  
  29.     move.l    _vbr,a2
  30.     move.l orig_lev3(a1),$6c(a2)
  31.     move.l orig_lev2(a1),$68(a2)
  32.     move.w orig_inten(a1),d0
  33.     move.w orig_dmacon(a1),d1
  34.     move.w orig_intreq(a1),d2
  35.     ori.w #$c000,d0
  36.     move.w d0,$dff09a
  37.     ori.w #$8000,d1
  38.     move.w d1,$dff096
  39.     ori.w #$8000,d2
  40.     move.w d2,$dff09c
  41.  
  42.     Move.l $4,a6        ;restore system
  43.     move.l #gfx_text,a1
  44.     moveq #0,d0
  45.     jsr -$228(a6)
  46.     addi.l #$26,d0
  47.     move.l d0,a0
  48. *    move.l (a0),$dff080
  49. *    clr.w $dff088
  50.  
  51.     movem.l (a7)+,a0-a6/d1-d7
  52.     moveq #0,d0
  53.     bsr loadexe
  54.     moveq #0,d0
  55.     bra start
  56.  
  57. _vbr:    dc.l    0
  58.  
  59. gfx_text    dc.b "graphics.library",0
  60.     even
  61.  
  62. restvars    dcb.w $8,0
  63.  
  64. orig_inten  equ $0
  65. orig_intreq equ $2
  66. orig_dmacon equ $4
  67. orig_lev3   equ $6
  68. orig_lev2      equ $a
  69.  
  70. *----------------------------------------------------------------------------
  71.  
  72. * OUTCAST Variable_Labels *
  73.  
  74. oldmousex        equ 0
  75. oldmousey        equ 2
  76. pointerx        equ 4
  77. pointery        equ 6
  78. icon_lit        equ 8
  79. no_of_intros    equ $a
  80. intros_first_line    equ $c
  81. intros_step    equ $e
  82. menu_mode        equ $10
  83. intro_highlighted    equ $12
  84. screen_offset    equ $14
  85. next_page_top    equ $16
  86. scroll_left    equ $1a
  87. scroll_right    equ $1c
  88. column_slice    equ $1e
  89. last_page        equ $20
  90. current_page_top    equ $22
  91. first_page    equ $26
  92. icon_selected    equ $28
  93. drop_screen    equ $2a
  94. drop_sin_index    equ $2c
  95. nextpage_trig    equ $2e
  96. prevpage_trig    equ $30
  97. menu_trig        equ $32
  98. newframe        equ $34
  99. keypressed    equ $36
  100. oldkey        equ $37
  101. charnumber    equ $38
  102. matchline        equ $3a
  103. matchscreen    equ $3c
  104. old_match_address    equ $3e
  105. did_find        equ $42
  106. start_of_section    equ $44
  107. nearestmatchline    equ $48
  108. nearestmatchpagetop equ $4a
  109. nearestmatchscreen    equ $4c
  110. showsearchbox    equ $50
  111. y_centre        equ $52
  112. waitpage        equ $54
  113. music_toggle    equ $56
  114. fade_music    equ $58
  115. fade_in_all    equ $5a
  116. fade_out_all    equ $5c
  117. quit        equ $5e
  118. barpos        equ $60
  119. searchplanes_on    equ $62
  120. copirq_occured    equ $64
  121. fadelpi        equ $66
  122. load_intro    equ $68
  123. presentspage    equ $6a
  124.  
  125. ;----------------------------------------------------------------------------
  126.  
  127. routine:    move.l #$dff000,a6
  128.     move.l #$7fff7fff,$9a(a6)
  129.     move.w #$8400,$96(a6)
  130.     move.l    _vbr,a2
  131.     move.l #New_LEV3,$6c(a2)
  132.     move.l #New_Lev2,$68(a2)
  133.     
  134.     move.l #outcast_vars,a5
  135.     moveq #$3f,d7
  136. wipevars    clr.w (a5)+
  137.     dbf d7,wipevars
  138.     move.l #textscreen-84,a5
  139.     move.w #8693,d7
  140. wipets    clr.w (a5)+
  141.     dbf d7,wipets
  142.     move.l #textplane2,a5
  143.     move.w #6971,d7
  144. wipetp2    clr.w (a5)+
  145.     dbf d7,wipetp2
  146.  
  147.     move.l #lpcols1+2,a5
  148.     move.l #lpcols2+2,a4
  149.     move.l #cop_cols1+2,a3
  150.     move.l #cop_cols3+2,a2
  151.     move.l #cop_pcols+2,a1
  152.     move.w #15,d7
  153. cccloop1    clr.w (a5)
  154.     clr.w (a4)
  155.     clr.w (a3)
  156.     clr.w (a2)
  157.     clr.w (a1)
  158.     addq.w #4,a5
  159.     addq.w #4,a4
  160.     addq.w #4,a3
  161.     addq.w #4,a2
  162.     addq.w #4,a1
  163.     dbf d7,cccloop1
  164.     
  165.     move.l #cop_bcols+6,a5
  166.     moveq #31,d7
  167. setbclp    move.w #sbcol,(a5)
  168.     add.w #20,a5
  169.     dbf d7,setbclp
  170.  
  171.     bsr mt_init
  172.     bsr INIT_FONTS
  173.     
  174.     move.l #cop_bpls1,a0
  175.     move.l #cop_bpls3,a1
  176.     move.l #topborder,d0
  177.     move.l #bottomborder,d1
  178.     moveq #3,d7
  179. initbpllp    move.w d0,6(a0)
  180.     swap d0
  181.     move.w d0,2(a0)
  182.     swap d0
  183.     move.w d1,6(a1)
  184.     swap d1
  185.     move.w d1,2(a1)
  186.     swap d1
  187.     add.l #40,d0
  188.     add.l #40,d1
  189.     addq.l #8,a0
  190.     addq.l #8,a1
  191.     dbf d7,initbpllp
  192.  
  193.     move.l #cop_bpl2,a0
  194.     move.l #textplane2,d0
  195.     move.w d0,6(a0)
  196.     swap d0
  197.     move.w d0,2(a0)
  198.  
  199.     move.l #cop_spr,a0
  200.     move.l #spr1,d0
  201.     move.w d0,6(a0)
  202.     swap d0
  203.     move.w d0,2(a0)
  204.     move.l #spr2,d0
  205.     move.w d0,$e(a0)
  206.     swap d0
  207.     move.w d0,$a(a0)
  208.     
  209.     move.l #copper_bar,d0
  210.     move.l #cop_skpln,a0
  211.     move.w d0,$6(a0)
  212.     swap d0
  213.     move.w d0,$2(a0)
  214.     move.l #copper_rtn,d0
  215.     move.l #copper_bar,a0
  216.     move.w d0,$6(a0)
  217.     swap d0
  218.     move.w d0,$2(a0)
  219.     move.l #copper,d0
  220.     move.l #cop_rstrt,a0
  221.     move.w d0,$6(a0)
  222.     swap d0
  223.     move.w d0,$2(a0)
  224.  
  225.     moveq #1,d0
  226.     moveq #0,d1
  227.     bsr blit_button
  228.     moveq #7,d0
  229.     moveq #0,d1
  230.     bsr blit_button
  231.     moveq #8,d0
  232.     moveq #1,d1
  233.     bsr blit_button
  234.     moveq #2,d0
  235.     moveq #0,d1
  236.     bsr blit_button
  237.     
  238.     move.l #lpbpls1,a0
  239.     move.l #lpbpls2,a1
  240.     move.l #outcastscreen,d0
  241.     move.l #outcastscreen+(512/8*4),d1
  242.     moveq #3,d7
  243. initlplp    move.w d0,6(a0)
  244.     swap d0
  245.     move.w d0,2(a0)
  246.     swap d0
  247.     move.w d1,6(a1)
  248.     swap d1
  249.     move.w d1,2(a1)
  250.     swap d1
  251.     add.l #512/8,d0
  252.     add.l #512/8,d1
  253.     addq.l #8,a0
  254.     addq.l #8,a1
  255.     dbf d7,initlplp
  256.  
  257.     move.l #lpswap1,a0
  258.     move.l #lpswap2,a1
  259.     move.l #loadingpiccopper1,d0
  260.     move.l #loadingpiccopper2,d1
  261.     move.w d0,6(a1)
  262.     swap d0
  263.     move.w d0,2(a1)
  264.     move.w d1,6(a0)
  265.     swap d1
  266.     move.w d1,2(a0)
  267.  
  268.     bsr drawinitpage
  269.  
  270.     move.l #cop_cols2+2,a5
  271.     moveq #7,d7
  272. wcclp    clr.w (a5)
  273.     addq.w #4,a5
  274.     dbf d7,wcclp
  275.     
  276.     include includes/dotplot_initcode_c.src
  277.  
  278.     move.w #$4000,mt_volscale
  279.     move.l #$dff000,a6
  280.     move.l #outcast_vars,a5
  281.     move.w #1,presentspage(a5)
  282.     move.b #$ff,keypressed(a5)
  283.     move.w #34,fade_in_all(a5)
  284.     move.w #$1,first_page(a5)
  285.     move.w #$1,last_page(a5)
  286.     move.w #$01fe,cop_doskp
  287.     move.l #copper,$80(a6)
  288.     clr.w $88(a6)
  289.     move.w #$c038,$9a(a6)
  290.  
  291. ;---------------------------------------------------------------------------
  292.  
  293. waitloop    move.l #outcast_vars,a5    ;main code loop
  294.     tst.w newframe(a5)
  295.     beq.s waitloop
  296.     clr.w newframe(a5)
  297.     bsr eachframetasks
  298.     move.l #outcast_vars,a5
  299.     tst.w quit(a5)
  300.     beq waitloop
  301.  
  302.     jsr mt_end
  303.     move.l    _vbr,a2
  304.     move.l #lev3phase2,$6c(A2)    ;loading pic section
  305.     move.l #$dff000,a0
  306.     move.w #$7fff,$9a(a0)
  307.     move.l #lacesynccopper,$80(a0)
  308.     clr.w $88(a0)
  309. wlf1    btst #7,$4(a0)
  310.     beq.s wlf1
  311. wlf2    btst #7,$4(a0)
  312.     bne.s wlf2
  313. wlf3    btst #7,$4(a0)
  314.     beq.s wlf2
  315.     move.l #loadingpiccopper1,$80(a0)
  316.     clr.w $88(a0)
  317.     move.w #$c020,$9a(a0)
  318. waitloop2    move.l #outcast_vars,a5
  319.     tst.w newframe(a5)
  320.     beq.s waitloop2
  321.     clr.w newframe(a5)
  322.     bsr fadeloadpicin
  323.     move.l #outcast_vars,a5
  324.     addq.w #1,fadelpi(a5)
  325.     cmpi.w #64,fadelpi(a5)
  326.     bls.s waitloop2
  327.     move.w load_intro(a5),d0
  328.     subq.w #1,d0
  329.     lsl.w #2,d0
  330.     move.l #fn_addrs,a0
  331.     move.l $00(a0,d0.w),filename
  332.     rts
  333.     
  334. ;---------------------------------------------------------------------------
  335.  
  336. New_lev3    movem.l a0-a6/d0-d7,-(a7)
  337.     andi.w #$10,$dff01e
  338.     beq.s vbl
  339.     bsr mt_music
  340.     bsr highlight
  341.     move.l #outcast_vars,a5
  342.     move.w #1,copirq_occured(a5)
  343.     move.w #$0010,$dff09c
  344.     bra l3end
  345.  
  346. vbl    move.l #outcast_vars,a5
  347.     move.w #1,newframe(a5)
  348.     bsr update_screen_pos
  349.     bsr dot_plotter
  350.     bsr gen_searchbox
  351.     move.w #$0020,$dff09c
  352. l3end    movem.l (a7)+,a0-a6/d0-d7
  353.     rte
  354.     
  355. ;---------------------------------------------------------------------------
  356.  
  357. Lev3phase2
  358.  
  359.     movem.l a0-a6/d0-d7,-(a7)
  360.     move.l #outcast_vars,a5
  361.     move.w #1,newframe(a5)
  362.     move.w #$0020,$dff09c
  363.     bra l3end
  364.     
  365. ;---------------------------------------------------------------------------
  366.  
  367. New_lev2:
  368.  
  369.     movem.l d0/a2,-(a7)
  370.     move.l #$bfe001,a2
  371.     btst #3,$d00(a2)
  372.     beq nokey
  373.  
  374.     move.b #$48,$e00(a2)    
  375.     move.b #53,$400(a2)        ;set timer lo
  376.     move.b #00,$500(a2)        ;set timer hi (starts counter)
  377. kciawlp2    btst #0,$e00(a2)        ;wait for timeout
  378.     bne.s kciawlp2
  379.     
  380.     bclr #6,$e00(a2)
  381.     move.b $c00(a2),d0
  382.     not.b d0
  383.     ror.b #1,d0
  384.     move.l #outcast_vars,a2
  385.     move.b d0,keypressed(a2)
  386.  
  387. nokey    move.w #8,$dff09c
  388.     movem.l (a7)+,d0/a2
  389.     rte
  390.     
  391. ;---------------------------------------------------------------------------
  392.  
  393.  
  394. eachframetasks:
  395.  
  396.     bsr screen_changes
  397.     bsr mouse
  398.     bsr pointer_sense
  399.     bsr button_handler
  400.     bsr scroll_text
  401.     bsr music_fader
  402.     bsr screen_fades
  403.     rts
  404.         
  405. ;---------------------------------------------------------------------------
  406.  
  407. update_screen_pos:
  408.  
  409. drop_x    equ $c0
  410. drop_step    equ 2
  411.  
  412.     movem.l a0-a6/d0-d7,-(a7)
  413.     move.l #outcast_vars,a6
  414.     tst.w waitpage(a6)
  415.     beq.s nowp
  416.     subq.w #1,waitpage(a6)
  417.  
  418. nowp    tst.w searchplanes_on(a6)
  419.     bne sp_on
  420.     move.l #cop_bpl1,a0
  421.     move.l #textscreen+2,a1
  422.     add.w screen_offset(a6),a1
  423.     move.l a1,d0
  424.     move.w d0,$6(a0)
  425.     swap d0
  426.     move.w d0,$2(a0)
  427.     swap d0
  428.     subi.l #84,d0
  429.     move.l #cop_bpl2,a0
  430.     move.w d0,$6(a0)
  431.     swap d0
  432.     move.w d0,$2(a0)
  433.     swap d0
  434.  
  435. sp_on    tst.w drop_screen(a6)
  436.     beq no_drop
  437.     moveq #$48,d0
  438.     move.w drop_sin_index(a6),d1
  439.     lsl.w #1,d1
  440.     move.l #sinetable,a2
  441.     move.w $00(a2,d1.w),d1
  442.     lsl.w #1,d1
  443.     neg.w d1
  444.     mulu #drop_x,d1
  445.     swap d1
  446.     add.w d1,d0
  447.     move.w #$b200,cop_tstrt+6
  448.     cmpi.w #$eb,d0
  449.     bls.s pos_ok
  450.     move.w #$ec,d0
  451.     clr.w cop_tstrt+6
  452. pos_ok    move.b d0,cop_tstrt
  453.  
  454. no_drop    move.w barpos(a6),d0    
  455.     move.l #copper_bar+8,a0
  456.     lea $8(a0),a1
  457.     moveq #$1f,d7
  458. hlloop    move.b d0,(a0)
  459.     move.b d0,(a1)
  460.     add.w #$14,a0
  461.     add.w #$14,a1
  462.     addq.w #1,d0
  463.     dbf d7,hlloop
  464.     movem.l (a7)+,a0-a6/d0-d7
  465.     rts
  466.  
  467. ;---------------------------------------------------------------------------
  468.  
  469. screen_changes
  470.  
  471.     movem.l a0-a6/d0-d7,-(a7)
  472.     move.l #outcast_vars,a6
  473.     tst.w drop_screen(a6)
  474.     beq no_drop2
  475.  
  476.     add.w #drop_step,drop_sin_index(a6) ;screen dropped out of sight?
  477.     cmp.w #178,drop_sin_index(a6)
  478.     bne.s no_max_depth
  479.     move.l #dot_vars,a5
  480.     move.w #1,dospin(a5)
  481.     clr.w presentspage(a6)
  482.  
  483.     tst.w menu_trig(a6)        ;menu mode triggered?
  484.     beq.s notsmenu
  485.     clr.w screen_offset(a6)
  486.     bsr create_intro_menu
  487.     move.w #10,drop_sin_index(a6)
  488.     bra no_drop2
  489.  
  490. notsmenu    move.w matchline(a6),d0    ;screen shown as result of search?
  491.     beq notsf
  492.     move.w matchscreen(a6),d0
  493.     mulu #80,d0
  494.     
  495. notsf    move.l next_page_top(a6),a1
  496.     move.l #textscreen+2,a0
  497.     move.w d0,screen_offset(a6)
  498.     add.w d0,a0
  499.     bsr make_text_screen
  500.     move.w #2,drop_sin_index(a6)
  501.     bra no_drop2
  502.  
  503. no_max_depth
  504.     cmpi.w #90,drop_sin_index(a6)
  505.     bne.s no_drop2
  506.     clr.w drop_screen(a6)
  507.     tst.w menu_trig(a6)
  508.     beq.s no_mt
  509.     clr.w menu_trig(a6)
  510.     move.w #1,menu_mode(a6)
  511. no_mt    move.w matchline(a6),d0
  512.     beq no_drop2
  513.     subq.w #1,d0
  514.     lsl.w #3,d0
  515.     add.b #$47,d0
  516.     move.b d0,cop_hl1
  517.     add.b #9,d0
  518.     move.b d0,cop_hl2
  519.  
  520.     move.w #$0180,cop_hl1+4    ;highlight col 0
  521.     move.w #$0180,cop_hl2+4    ;highlight col 0
  522.     clr.w matchline(a6)
  523.  
  524. no_drop2    movem.l (a7)+,a0-a6/d0-d7
  525.     rts
  526.  
  527. ;---------------------------------------------------------------------------
  528.  
  529. mouse:    move.l #$dff000,a0        ;read mouse - move pointer
  530.     move.l #outcast_vars,a2
  531.  
  532.     move.b $a(a0),d0
  533.     move.b $b(a0),d1
  534.     move.b d0,d2
  535.     move.b d1,d3
  536.     sub.b oldmousex(a2),d0
  537.     sub.b oldmousey(a2),d1
  538.     ext.w d0
  539.     ext.w d1
  540.     add.w d0,pointery(a2)
  541. skp_y    add.w d1,pointerx(a2)
  542.     cmpi.w #$134,pointerx(a2)
  543.     blt.s xinrr
  544.     move.w #$134,pointerx(a2)
  545. xinrr    tst.w pointerx(a2)
  546.     bpl.s xinrl
  547.     clr.w pointerx(a2)
  548. xinrl    cmpi.w #$e0,pointery(a2)
  549.     blt.s yinrb
  550.     move.w #$e0,pointery(a2)
  551. yinrb    tst.w pointery(a2)
  552.     bpl.s yinrt
  553.     clr.w pointery(a2)
  554. yinrt    move.b d2,oldmousex(a2)
  555.     move.b d3,oldmousey(a2)
  556.  
  557.     move.l #spr1,a3        ;put new coords in sprite
  558.     move.w pointerx(a2),d0
  559.     move.w pointery(a2),d1
  560.     add.w #$80,d0
  561.     add.w #$49,d1
  562.     move.w d1,d2
  563.     add.w #$f,d2
  564.     move.b d1,(a3)
  565.     move.b d2,$2(a3)
  566.     move.w #$80,d4
  567.     lsr.w #1,d0
  568.     bcc.s nocarry
  569.     or.w #1,d4
  570. nocarry    move.b d0,$1(a3)
  571.     btst #8,d1
  572.     beq.s novstrt
  573.     ori.w #4,d4
  574. novstrt    btst #8,d2
  575.     beq.s novstop
  576.     ori.w #2,d4
  577. novstop    move.b d4,$3(a3)
  578.     move.l (a3),spr2
  579.  
  580. skipxy    tst.w intro_highlighted(a2)
  581.     beq.s normb
  582.     tst.w fade_out_all(a2)
  583.     bne.s normb
  584.     move.w intro_highlighted(a2),load_intro(a2)
  585.     btst #6,$bfe001
  586.     bne.s normb
  587.     move.w #40,fade_out_all(a2)
  588.     move.w #$fc00,fade_music(a2)
  589. normb    rts
  590.  
  591. ;---------------------------------------------------------------------------
  592.  
  593. Pointer_sense
  594.  
  595.     moveq #0,d7
  596.     move.l #outcast_vars,a0
  597.     tst.w drop_screen(a0)
  598.     bne noclick
  599.     tst.w scroll_left(a0)
  600.     bne noclick
  601.     tst.w scroll_right(a0)
  602.     bne noclick
  603.     
  604.     btst #6,$bfe001
  605.     bne noclick
  606.     move.l #buttonsensemask,a1
  607.     move.w pointery(a0),d0
  608.     sub.w #166,d0        ;text screen height
  609.     bcs nobit3
  610.     move.w pointerx(a0),d1
  611.     lsr.w #1,d0
  612.     lsr.w #1,d1
  613.     move.w d1,d2
  614.     andi.w #7,d2
  615.     eori.w #7,d2
  616.     mulu #(160/8)*4,d0
  617.     add.w d0,a1
  618.     lsr.w #3,d1
  619.     add.w d1,a1
  620.     
  621.     btst d2,(a1)
  622.     beq.s nobit0
  623.     ori.w #1,d7
  624. nobit0    add.w #160/8,a1
  625.     btst d2,(a1)
  626.     beq.s nobit1
  627.     ori.w #2,d7
  628. nobit1    add.w #160/8,a1
  629.     btst d2,(a1)
  630.     beq.s nobit2
  631.     ori.w #4,d7
  632. nobit2    add.w #160/8,a1
  633.     btst d2,(a1)
  634.     beq.s nobit3
  635.     ori.w #8,d7
  636. nobit3    
  637.  
  638. noclick    move.w d7,icon_selected(a0)
  639.     rts
  640.  
  641. ;---------------------------------------------------------------------------
  642.  
  643. blit_button:
  644.  
  645. * D0 : button to draw 1-9
  646. * D1 : 1=select, 0=unselect
  647.  
  648.     movem.l a0-a6/d0-d7,-(a7)
  649.     move.l #$dff000,a6
  650.     move.l #$ffff0000,$44(a6)    ;f/l word masks
  651.     
  652.     move.l #button_unselected_addrs,a0
  653.     tst.w d1
  654.     beq.s unsel
  655.     move.l #button_selected_addrs,a0
  656. unsel    move.l #buttonsizes_and_positions,a2
  657.     subq.w #1,d0
  658.     lsl.w #2,d0
  659.     move.w d0,d1
  660.     lsl.w #1,d1
  661.     move.w 0(a2,d1.w),d2    ;size x
  662.     lsr.w #3,d2        ;width in bytes
  663.     move.w d2,d6        ;store byte width
  664.     mulu 2(a2,d1.w),d2        ;* size y
  665.     move.w d2,d4        ;store length of 1 plane
  666.     lsl.w #2,d2        ;* 4 to find mask
  667.     move.l 0(a0,d0.w),a1
  668.     move.l a1,$4c(a6)        ;source b - data
  669.     add.w d2,a1
  670.     
  671.     move.l #bottomborder,a3
  672.     move.w 4(a2,d1.w),d3    ;x plot pos
  673.     move.w d3,d5
  674.     move.w 6(a2,d1.w),d2    ;y pos
  675.     mulu #40*4,d2
  676.     lsr.w #4,d3
  677.     lsl.w #1,d3
  678.     add.w d3,a3
  679.     add.w d2,a3        ;plot address
  680.  
  681.     and.w #$f,d5
  682.     ror.w #4,d5
  683.     move.w d5,$42(a6)        ;bltcon1
  684.     ori.w #$0fca,d5
  685.     move.w d5,$40(a6)        ;bltcon0
  686.     
  687.     addq.w #2,d6
  688.     move.w #40*4,d5
  689.     sub.w d6,d5
  690.     move.w d5,$60(a6)        ;mod c
  691.     move.w d5,$66(a6)        ;mod d
  692.     move.w #$fffe,$62(a6)    ;mod b
  693.     move.w #$fffe,$64(a6)    ;mod a
  694.     
  695.     move.w 2(a2,d1.w),d5    ;size y
  696.     lsl.w #6,d5
  697.     lsr.w #1,d6
  698.     or.w d6,d5
  699.     
  700.     moveq #3,d7
  701. blitloop    move.l a1,$50(a6)        ;source a - mask
  702.     move.l a3,$48(a6)        ;source c
  703.     move.l a3,$54(a6)        ;dest   d    
  704.     move.w d5,$58(a6)
  705.     bsr blitwait
  706.     add.w #40,a3
  707.     dbf d7,blitloop
  708.     movem.l (a7)+,a0-a6/d0-d7
  709.     rts
  710.  
  711. *----------------------------------------------------------------------------
  712.  
  713. Create_intro_menu
  714.  
  715. X_centre        equ 320
  716. Y_line_spacing    equ 2
  717. Modulo        equ 84
  718.  
  719.     movem.l a0-a6/d0-d7,-(a7)
  720.     bsr clear_main_screen
  721.     move.l #cop_bpl2,a0
  722.     move.l #textscreen-82,d0
  723.     move.w d0,6(a0)
  724.     swap d0
  725.     move.w d0,2(a0)
  726.  
  727.     move.l #intros_banner,a1
  728.     move.l a1,a3
  729.     moveq #0,d1        ;count number of lines used by intro
  730. findlines    move.b (a3)+,d0        ;menu banner, so that the centre of        
  731.     beq.s foundlnes        ;the remaining space can be found
  732.     cmpi.b #$a,d0        
  733.     bne.s findlines
  734.     addq.w #1,d1
  735.     bra findlines
  736. foundlnes    mulu #9,d1
  737.     move.w #166,d2
  738.     sub.w d1,d2
  739.     lsr.w #1,d2
  740.     add.w d1,d2    
  741.     subq.w #1,d2
  742.     move.l #Outcast_vars,a6
  743.     move.w d2,y_centre(a6)        
  744.     
  745.     move.l #textscreen+2,a0
  746.     bsr make_text_screen
  747.  
  748.     move.l #Outcast_vars,a6
  749.     clr.w screen_offset(a6)
  750.     move.l #textscreen+2,plot_screen
  751.     move.w #modulo,total_modulo
  752.     move.w #0,use_font
  753.     
  754.     move.l #intros_text,a0
  755.     moveq #0,d7        ;count number of intros
  756.     move.l a0,a1
  757. lcntloop    cmpi.b #$a,(a1)+
  758.     bne.s lcntloop
  759.     addq.w #1,d7
  760.     cmp.b #"@",(a1)+
  761.     bne.s lcntloop
  762.     move.w d7,no_of_intros(a6)
  763.  
  764.     move.l #font_list,a1
  765.     move.w use_font,d3
  766.     mulu #3*4,d3
  767.     move.l 0(a1,d3.w),a2
  768.     move.w $2(a2),d0        ;height of this font
  769.     add.w #y_line_spacing,d0
  770.     move.w d0,d2
  771.     move.w d0,intros_step(a6)
  772.     mulu d7,d0        ;total height of intro text
  773.     lsr.w #1,d0
  774.     move.w y_centre(a6),d1
  775.     sub.w d0,d1        ;y position of 1st line
  776.     move.w d1,plotypos
  777.     subq.w #2,d1
  778.     move.w d1,intros_first_line(a6)
  779.     
  780.     move.l 8(a1,d3.w),a2
  781.     sub.w #128,a2        ;char width list
  782.     move.l a0,a3
  783. nxtmnuln    bsr findpixlength
  784.     lsr.w #1,d1
  785.     move.w #x_centre,d0
  786.     sub.w d1,d0
  787.     move.w d0,plotxpos
  788.     bsr type_text
  789.     add.w d2,plotypos
  790.     cmpi.b #"@",(a3)
  791.     bne nxtmnuln
  792.  
  793.     move.l #copper_bar+8,a0
  794.     move.w intros_step(a6),d0
  795.     mulu #$14,d0
  796.     move.w #$0088,-4(a0,d0.w)
  797.     bsr setmenupalette
  798.  
  799.     movem.l (a7)+,a0-a6/d0-d7
  800.     rts
  801.  
  802. findpixlength:
  803.     
  804.     move.l a3,a0
  805.     moveq #0,d1
  806.     moveq #0,d0
  807. ftwid    move.b (a3)+,d0                
  808.     cmp.b #$a,d0
  809.     beq.s eol
  810.     move.b 0(a2,d0.w),d0
  811.     add.w d0,d1        ;total width
  812.     add.w char_spacing,d1
  813.     bra.s ftwid
  814. eol    rts
  815.  
  816. *----------------------------------------------------------------------------
  817.  
  818. highlight
  819.  
  820.     move.l #outcast_vars,a6
  821.     tst.w menu_mode(a6)
  822.     bne.s go_hl
  823.     rts
  824.  
  825. go_hl    moveq #0,d0
  826.     move.w pointery(a6),d0
  827.     sub.w intros_first_line(a6),d0
  828.     bcs outrange
  829.     divu intros_step(a6),d0
  830.     move.w d0,d1
  831.     addq.w #1,d1
  832.     cmp.w no_of_intros(a6),d1
  833.     bhi.s outrange
  834.     move.w d1,intro_highlighted(a6)
  835.     mulu intros_step(a6),d0
  836.     add.w intros_first_line(a6),d0
  837.     add.w #$48,d0
  838.     move.w d0,barpos(a6)
  839.     move.w #$0088,cop_doskp
  840.     rts
  841.                 
  842. outrange    move.w #$01fe,cop_doskp
  843.     clr.w intro_highlighted(a6)
  844.     rts
  845.     
  846.  
  847. ******************************************************************************            
  848. *>>>>>>>>>>>>>>>>>>>>>>>>>> ANYFONT ROUTINE STARTS <<<<<<<<<<<<<<<<<<<<<<<<<<*
  849. ******************************************************************************            
  850.  
  851. * Any_Font plotter V1.00 (C) Phil!95/Neo 26/3/95...
  852.  
  853. INIT_FONTS:
  854.     
  855.     movem.l a0-a6/d0-d7,-(a7)
  856.     move.l #font_list,a6
  857. init_cset    move.l $4(a6),a0
  858.     move.l $8(a6),a1
  859.     move.l (a6),a4
  860.     move.l a4,d0        ;All fonts done?
  861.     beq finitdone
  862.     addq.w #4,a4
  863.  
  864.     move.w -4(a4),d0
  865.     mulu   -2(a4),d0
  866.     add.l d0,a4        ;edge detect line
  867.     moveq #0,d7        ;pixel pos
  868.  
  869.     moveq #0,d0
  870. nextpoint    move.b (a0)+,d0
  871.     beq csetdone
  872.     move.w d0,d1
  873.     lsl.w #1,d1
  874.     
  875.     move.w d7,(a1,d1.w)        ;position of char
  876. findpoint    addq.w #1,d7
  877.     move.w d7,d6
  878.     move.w d6,d5
  879.     lsr.w #3,d6
  880.     andi.w #7,d5
  881.     eori.w #7,d5
  882.     btst d5,(a4,d6.w)
  883.     beq.s findpoint
  884.  
  885.     move.w d7,d6
  886.     sub.w (a1,d1.w),d6
  887.     move.b d6,-128(a1,d0.w)    ;width of char
  888.     bra  nextpoint
  889. csetdone
  890.     add.w #12,a6
  891.     bra init_cset
  892.  
  893. finitdone        
  894.     movem.l (a7)+,a0-a6/d0-d7
  895.     rts
  896.     
  897. *----------------------------------------------------------------------------
  898.  
  899. TYPE_TEXT:
  900.  
  901.     move.w use_font,d0
  902.     mulu #12,d0        ;access correct font tables
  903. nxt_char    move.b (a0)+,d7
  904.     cmpi.b #$a,d7
  905.     bls.s text_done
  906.     bsr PLOT_CHAR
  907.     bra nxt_char
  908. text_done    rts
  909.     
  910. *----------------------------------------------------------------------------
  911.  
  912. PLOT_CHAR:
  913.  
  914. * D7 holds ASCII value of char to plot.
  915. * Vars: Plotxpos and plotypos hold plot position.
  916. *       Total_modulo = y line offset
  917. *       Char_spacing = (additional) character gap
  918. *       Plot_screen  = screen start address
  919.  
  920.  
  921.     movem.l a0-a6/d0-d7,-(a7)
  922.  
  923.     move.l #font_list,a4
  924.     move.l 0(a4,d0.w),a1
  925.     addq.w #4,a1
  926.     move.l Plot_screen,a2
  927.     move.l $8(a4,d0.w),a3
  928.     move.l #mask_list,a5
  929.     move.l #$dff000,a6
  930.  
  931.     moveq #0,d0
  932.     move.w plotypos,d0
  933.     mulu total_modulo,d0
  934.     add.l d0,a2
  935.     move.w plotxpos,d1
  936.     move.w d1,d2        
  937.     andi.w #$f,d2        ;char drop position 4 ls.bits
  938.     lsr.w #4,d1
  939.     lsl.w #1,d1
  940.     add.w d1,a2        ;char drop word-aligned address 
  941.  
  942.     andi.w #$ff,d7
  943.     move.w d7,d6
  944.     lsl.w #1,d6
  945.     move.w 0(a3,d6.w),d6    ;char fetch position
  946.     move.w d6,d3
  947.     andi.w #$000f,d3        ;fetch position 4 ls.bits
  948.     move.b -128(a3,d7.w),d7    ;char width
  949.     add.w d7,plotxpos
  950.  
  951.     moveq #0,d5        ;Calc font_data source address
  952.     move.w d6,d5
  953.     lsr.w #4,d5
  954.     lsl.w #1,d5
  955.     add.l a1,d5
  956.     move.l d5,$50(a6)        ;Blitter source A (Font word addr)
  957.  
  958.     move.w d6,d5
  959.     add.w d7,d5        ;right edge of char
  960.     move.w d6,d0        ;copy left edge pos
  961.     move.w d5,d1        ;copy right egde pos
  962.     andi.w #$fff0,d0
  963.     andi.w #$fff0,d1
  964.     sub.w d0,d1
  965.     lsr.w #4,d1
  966.     addq.w #2,d1        ;gives total width of blit
  967.     move.w d1,d0        ;back up word width
  968.     lsl.w #1,d1
  969.     neg.w d1
  970.     move.w d1,$62(a6)        ;Blitter modulo 'B' (font mask)
  971.     lea $60(a5,d1.w),a4
  972.     move.l a4,$4c(a6)        ;Blitter source 'B' addr (font mask)
  973.  
  974.     andi.w #$f,d6
  975.     lsl.w #1,d6
  976.     andi.w #$f,d5
  977.     lsl.w #1,d5
  978.     move.w $00(a5,d6.w),$44(a6)    ;Blitter FWM
  979.     clr.w $46(a6)        ;Blitter LWM
  980.     move.w $20(a5,d5.w),$5c(a5)    ;Right edge mask in place
  981.  
  982.     sub.w d3,d2        ;calc rotation (sub fetch from plot)
  983.     bpl sameword
  984.     subq.w #2,a2        ;back a word if minus
  985. sameword    ror.w #4,d2
  986.     andi.w #$f000,d2
  987.     move.w d2,$42(a6)        ;BLTCON1
  988.     ori.w #$0fea,d2        ;D = A and B or C
  989.     move.w d2,$40(a6)        ;BLTCON 0 (source rotation)
  990.     move.l a2,$48(a6)        ;Blitter source C  (Plot address)
  991.     move.l a2,$54(a6)        ;Blitter dest   D  (''        '')
  992.  
  993.     move.w total_modulo,d2
  994.     add.w d1,d2
  995.     move.w d2,$60(a6)        ;Blitter Modulo C
  996.     move.w d2,$66(a6)        ;Blitter Modulo D
  997.     move.w -4(a1),d2        ;get font width in bytes..
  998.     add.w d1,d2
  999.     move.w d2,$64(a6)        ;Blitter Modulo A
  1000.     
  1001.     move.w -2(a1),d2        ;get font height
  1002.     lsl.w #6,d2
  1003.     or.w d0,d2
  1004.     move.w d2,$58(a6)        ;Blitsize + go!
  1005.     bsr blitwait
  1006.     move.w char_spacing,d7
  1007.     add.w d7,plotxpos
  1008.     
  1009.     movem.l (a7)+,a0-a6/d0-d7
  1010.     rts
  1011.  
  1012. ******************************************************************************            
  1013. *>>>>>>>>>>>>>>>>>>>>>>>>> ANYFONT ROUTINE ENDS! <<<<<<<<<<<<<<<<<<<<<<<<<<<<*
  1014. ******************************************************************************            
  1015.  
  1016. Make_Text_Screen
  1017.  
  1018. Maxlines        equ 20
  1019. Stsmod        equ 84
  1020.  
  1021. * A0 = Address of screen
  1022. * A1 = Address of text
  1023.  
  1024.     movem.l a0-a6/d0-d7,-(a7)
  1025.     bsr clear_main_screen
  1026.     bsr settextpalette
  1027.     move.l #outcast_vars,a4
  1028.     clr.w first_page(a4)
  1029.     tst.b -2(a1)
  1030.     bne.s notfpage2
  1031.     move.w #1,first_page(a4)    
  1032.  
  1033. notfpage2    clr.w last_page(a4)
  1034.     move.l a1,current_page_top(a4)
  1035.  
  1036.     move.l a0,a2
  1037.     move.l #smallfont,a5
  1038.     moveq #0,d1
  1039. strtln1    moveq #0,d0
  1040.  
  1041. nschar1    moveq #0,d7
  1042.     move.b (a1)+,d7
  1043.     beq scend1
  1044.     cmpi.b #$a,d7
  1045.     beq.s cr1
  1046.     lsl.w #3,d7
  1047.     lea $00(a5,d7.w),a6
  1048.         
  1049.     move.b (a6)+,(a0)
  1050.     move.b (a6)+,stsmod(a0)
  1051.     move.b (a6)+,stsmod*2(a0)
  1052.     move.b (a6)+,stsmod*3(a0)
  1053.     move.b (a6)+,stsmod*4(a0)
  1054.     move.b (a6)+,stsmod*5(a0)
  1055.     move.b (a6)+,stsmod*6(a0)
  1056.     move.b (a6)+,stsmod*7(a0)
  1057.     
  1058.     addq.w #1,a0
  1059.     addq.w #1,d0
  1060.     cmpi.w #80,d0
  1061.     bne.s nschar1
  1062.     cmpi.b #$a,(a1)    ;skip cr if 80 column line
  1063.     bne.s cr1
  1064.     addq.w #1,a1
  1065.  
  1066. cr1    add.w #stsmod*8,a2
  1067.     move.l a2,a0
  1068.     addq.w #1,d1
  1069.     cmpi.w #maxlines,d1
  1070.     bne strtln1            
  1071.     tst.b (a1)
  1072.     beq scend1
  1073.     
  1074. mts_done    move.l a1,next_page_top(a4)
  1075.     movem.l (a7)+,a0-a6/d0-d7
  1076.     rts
  1077.     
  1078. scend1    move.w #1,last_page(a4)
  1079.     bra mts_done
  1080.     
  1081. ;---------------------------------------------------------------------------
  1082.  
  1083. Make_Buffer_Text_Screen
  1084.  
  1085. Stsmodb        equ 80
  1086.  
  1087. * A0 = Address of screen
  1088. * A1 = Address of text
  1089.  
  1090.     movem.l a0/a2-a6/d0-d7,-(a7)
  1091.     move.l #outcast_vars,a4
  1092.     clr.w first_page(a4)
  1093.     tst.b -2(a1)
  1094.     bne.s notfpage
  1095.     move.w #1,first_page(a4)    
  1096.  
  1097. notfpage    move.l a0,a2
  1098.     move.l #smallfont,a5
  1099.     moveq #0,d1
  1100. strtln2    moveq #0,d0
  1101.  
  1102. nschar2    moveq #0,d7
  1103.     move.b (a1)+,d7
  1104.     beq scend2
  1105.     cmpi.b #$a,d7
  1106.     beq.s cr2
  1107.     lsl.w #3,d7
  1108.     lea $00(a5,d7.w),a6
  1109.         
  1110.     move.b (a6)+,(a0)
  1111.     move.b (a6)+,stsmodb(a0)
  1112.     move.b (a6)+,stsmodb*2(a0)
  1113.     move.b (a6)+,stsmodb*3(a0)
  1114.     move.b (a6)+,stsmodb*4(a0)
  1115.     move.b (a6)+,stsmodb*5(a0)
  1116.     move.b (a6)+,stsmodb*6(a0)
  1117.     move.b (a6)+,stsmodb*7(a0)
  1118.     addq.w #1,a0
  1119.     addq.w #1,d0
  1120.     cmpi.w #80,d0
  1121.     bne.s nschar2
  1122.     cmpi.b #$a,(a1)    ;skip cr if 80 column line
  1123.     bne.s cr2
  1124.     addq.w #1,a1
  1125.  
  1126. cr2    add.w #stsmodb*8,a2
  1127.     move.l a2,a0
  1128.     addq.w #1,d1
  1129.     cmpi.w #maxlines,d1
  1130.     bne strtln2            
  1131.     tst.b (a1)
  1132.     beq scend2
  1133.     
  1134. mbs_done    movem.l (a7)+,a0/a2-a6/d0-d7
  1135.     rts
  1136.     
  1137. scend2    move.w #1,last_page(a4)
  1138.     bra mbs_done
  1139.     
  1140. ;---------------------------------------------------------------------------
  1141.  
  1142. scroll_text:
  1143.  
  1144.     move.l #$dff000,a6
  1145.     move.l #outcast_vars,a5
  1146.  
  1147.     tst.w nextpage_trig(a5)    ;next page requested?
  1148.     beq no_init_left
  1149.     clr.w nextpage_trig(a5)
  1150.     
  1151.     tst.w last_page(a5)
  1152.     bne no_init_left
  1153.     move.w #1,scroll_left(a5)
  1154.     clr.w column_slice(a5)
  1155.     clr.l old_match_address(a5)
  1156.     bsr waitcopirq
  1157.     move.b #$ec,cop_hl1        ;canel any match highlight bar
  1158.     move.b #$ec,cop_hl2
  1159.  
  1160.     move.w #nextpage_button,d0    ;select icon = on
  1161.     moveq #1,d1
  1162.     bsr blit_button
  1163.  
  1164.     move.l #textplane2,a0    ;clear screen
  1165.     move.l a0,$54(a6)
  1166.     move.l #$01000000,$40(a6)
  1167.     clr.w $66(a6)
  1168.     move.w #(166*64)+40,$58(a6)
  1169.     bsr blitwait
  1170.     move.l next_page_top(a5),a1    ;then type new text
  1171.     move.l a1,current_page_top(a5)
  1172.     bsr make_buffer_text_screen
  1173.     move.l a1,next_page_top(a5)
  1174.     bra no_init_right
  1175.     
  1176. no_init_left
  1177.  
  1178.     
  1179.     tst.w prevpage_trig(a5)    ;prev page requested?
  1180.     beq no_init_right
  1181.     clr.w prevpage_trig(a5)
  1182.     
  1183.     tst.w first_page(a5)
  1184.     bne no_init_right
  1185.     move.w #1,scroll_right(a5)
  1186.     clr.w column_slice(a5)
  1187.     clr.w last_page(a5)
  1188.     clr.l old_match_address(a5)
  1189.     bsr waitcopirq
  1190.     move.b #$ec,cop_hl1        ;cancel any match highlight bar
  1191.     move.b #$ec,cop_hl2
  1192.  
  1193.     moveq #20,d7        ;count back 20 lines to find
  1194.     moveq #$a,d0        ;prev page top addr
  1195.     move.l current_page_top(a5),a1
  1196. countback    cmp.b -(a1),d0
  1197.     bne.s countback
  1198.     subq.w #1,d7
  1199.     bpl.s countback
  1200.     addq.w #1,a1
  1201.     move.l a1,current_page_top(a5)
  1202.  
  1203.     move.w #prevpage_button,d0    ;select icon = on
  1204.     moveq #1,d1
  1205.     bsr blit_button
  1206.  
  1207.     move.l #textplane2,a0    ;clear screen
  1208.     move.l a0,$54(a6)
  1209.     move.l #$01000000,$40(a6)
  1210.     clr.w $66(a6)
  1211.     move.w #(166*64)+40,$58(a6)
  1212.     bsr blitwait
  1213.     bsr make_buffer_text_screen    ;type new 'prev page' text
  1214.     move.l a1,next_page_top(a5)
  1215.  
  1216. no_init_right
  1217.     
  1218.     clr.w nextpage_trig(a5)
  1219.     clr.w prevpage_trig(a5)
  1220.     tst.w scroll_left(a5)
  1221.     beq no_scroll_left
  1222.  
  1223.     move.w column_slice(a5),d0
  1224.     lsl.w #1,d0
  1225.     move.l #textplane2,a1
  1226.     add.w d0,a1
  1227.     move.l a1,$50(a6)        ;source
  1228.     
  1229.     move.l #textscreen,a2
  1230.     add.w screen_offset(a5),a2
  1231.     addq.w #2,screen_offset(a5)
  1232.     clr.w (a2)        ;clear top line
  1233.     add.w #82,a2
  1234.     move.l a2,$54(a6)        ;dest
  1235.  
  1236.     move.l #-1,$44(a6)
  1237.     move.l #$09f00000,$40(a6)
  1238.     move.w #80-2,$64(a6)
  1239.     move.w #84-2,$66(a6)
  1240.     move.w #(165*64)+1,$58(a6)
  1241.     bsr blitwait
  1242.     addq.w #1,column_slice(a5)
  1243.     cmpi.w #40,column_slice(a5)    
  1244.     bne.s sl_notend
  1245.     clr.w scroll_left(a5)
  1246.     move.w #nextpage_button,d0
  1247.     clr.w d1
  1248.     bsr blit_button
  1249.     move.w #5,waitpage(a5)
  1250. sl_notend    rts
  1251.     
  1252.  
  1253. no_scroll_left
  1254.  
  1255.     move.l #outcast_vars,a5
  1256.     tst.w scroll_right(a5)
  1257.     beq.s no_scroll_right
  1258.  
  1259.     moveq #39,d0
  1260.     sub.w column_slice(a5),d0
  1261.     lsl.w #1,d0
  1262.     move.l #textplane2,a1
  1263.     add.w d0,a1
  1264.     move.l a1,$50(a6)        ;source
  1265.     
  1266.     move.l #textscreen,a2
  1267.     add.w screen_offset(a5),a2
  1268.     subq.w #2,screen_offset(a5)
  1269.     clr.w 82(a2)        ;clear top line
  1270.     move.l a2,$54(a6)        ;dest
  1271.     
  1272.     move.l #-1,$44(a6)
  1273.     move.l #$09f00000,$40(a6)
  1274.     move.w #80-2,$64(a6)
  1275.     move.w #84-2,$66(a6)
  1276.     move.w #(165*64)+1,$58(a6)
  1277.     bsr blitwait
  1278.     addq.w #1,column_slice(a5)
  1279.     cmpi.w #40,column_slice(a5)    
  1280.     bne.s sr_notend
  1281.     clr.w scroll_right(a5)
  1282.     move.w #prevpage_button,d0
  1283.     clr.w d1
  1284.     bsr blit_button
  1285.     move.w #5,waitpage(a5)
  1286. sr_notend    rts
  1287.     
  1288.  
  1289. no_scroll_right
  1290.  
  1291.     rts
  1292.  
  1293. ;---------------------------------------------------------------------------
  1294.  
  1295. button_handler
  1296.  
  1297. prevpage_button    equ 1
  1298. menu_button    equ 2
  1299. messages_button    equ 3
  1300. adverts_button    equ 4
  1301. news_button    equ 5
  1302. info_button    equ 6
  1303. nextpage_button    equ 7
  1304. music_button    equ 8
  1305. search_button    equ 9
  1306.  
  1307.     move.l #outcast_vars,a5
  1308.     move.w icon_selected(a5),d2
  1309.  
  1310.     cmpi.w #messages_button,d2
  1311.     bne.s not_msgs
  1312.     move.l #messages,d0
  1313.     bra newtextfixed
  1314. not_msgs    cmpi.w #adverts_button,d2
  1315.     bne.s not_advs
  1316.     move.l #adverts,d0
  1317.     bra newtextfixed
  1318. not_advs    cmpi.w #news_button,d2
  1319.     bne.s not_news
  1320.     move.l #news,d0
  1321.     bra newtextfixed
  1322. not_news    cmpi.w #info_button,d2
  1323.     bne.s not_info
  1324.     move.l #info,d0
  1325.     bra newtextfixed
  1326.  
  1327. not_info    tst.w menu_mode(a5)        ;no scrolling if in menu mode!
  1328.     bne notsearch
  1329.     tst.w scroll_right(a5)
  1330.     bne.s not_np
  1331.     tst.w scroll_left(a5)
  1332.     bne.s not_np
  1333.  
  1334.     cmpi.b #$4f,keypressed(a5)
  1335.     beq.s key_prev
  1336.     cmpi.w #prevpage_button,d2
  1337.     bne not_pp
  1338. key_prev    tst.w waitpage(a5)
  1339.     bne.s not_pp
  1340.     move.w #1,prevpage_trig(a5)        
  1341.     rts
  1342.         
  1343. not_pp    cmpi.b #$4e,keypressed(a5)
  1344.     beq.s key_next
  1345.     cmpi.w #nextpage_button,d2    
  1346.     bne not_np
  1347. key_next    tst.w waitpage(a5)
  1348.     bne.s not_np
  1349.     move.w #1,nextpage_trig(a5)
  1350.     rts
  1351.     
  1352. not_np    cmpi.w #menu_button,d2
  1353.     bne.s not_menu
  1354.     cmp.w icon_lit(a5),d2
  1355.     beq.s not_menu
  1356.     move.w #1,menu_trig(a5)
  1357.     move.w icon_lit(a5),d0
  1358.     clr.w d1
  1359.     bsr blit_button
  1360.     move.w d2,d0
  1361.     move.w d0,icon_lit(a5)
  1362.     moveq #1,d1
  1363.     bsr blit_button
  1364.     move.w #1,drop_screen(a5)
  1365.     move.w #90,drop_sin_index(a5)
  1366.     bsr waitcopirq
  1367.     move.b #$ec,cop_hl1        ;canel any match highlight bar
  1368.     move.b #$ec,cop_hl2
  1369.  
  1370. not_menu    tst.w presentspage(a5)
  1371.     bne notsearch
  1372.     tst.w scroll_left(a5)
  1373.     bne notsearch
  1374.     tst.w scroll_right(a5)
  1375.     bne notsearch
  1376.     cmpi.b #$21,keypressed(a5)
  1377.     bne.s nopress_s
  1378.     move.w #search_button,d2
  1379. nopress_s    cmpi.w #search_button,d2    ;search?
  1380.     bne notsearch
  1381.     move.w d2,d0
  1382.     moveq #1,d1
  1383.     bsr blit_button
  1384.     bsr search_bitplane_fix
  1385.  
  1386.     clr.w did_find(a5)
  1387.     bsr waitcopirq
  1388.     move.b #$ec,cop_hl1    
  1389.     move.b #$ec,cop_hl2
  1390.     bsr underboxstore
  1391.     move.w #26,showsearchbox(a5)
  1392.     bsr setboxpalette
  1393. waitsear    tst.w showsearchbox(a5)    ;wait for box to appear
  1394.     bne.s waitsear
  1395.  
  1396.     move.l #oldsearchstring,a2
  1397.     move.l #searchstring,a4    ;print old search string
  1398.     clr.w d0
  1399.     clr.w d1
  1400. potlp    move.b (a4)+,d0
  1401.     move.b d0,(a2)+
  1402.     tst.b d0
  1403.     beq nxtchr
  1404.     bsr printschar
  1405.     addq.w #1,d1
  1406.     bra potlp        
  1407.  
  1408. nxtchr    move.w #"*",d0        ;print cursor
  1409.     move.w charnumber(a5),d1
  1410.     bsr printschar
  1411.  
  1412. keyup    btst #7,keypressed(a5)
  1413.     bne.s keyup    
  1414.     clr.w d0
  1415.     move.b keypressed(a5),d0
  1416.     move.b d0,oldkey(a5)
  1417.  
  1418.     cmpi.b #$45,d0
  1419.     beq cancelsearch
  1420.     cmpi.b #$44,d0        ;return?
  1421.     beq gotstring
  1422.     cmpi.b #$41,d0        ;delete?
  1423.     bne.s notdel
  1424.     
  1425.     move.l #searchstring,a3
  1426.     move.w charnumber(a5),d1
  1427.     subq.b #1,d1
  1428.     bmi samekey        ;cannot delete if pos 0    
  1429.     clr.b $00(a3,d1.w)
  1430.     moveq #" ",d0
  1431.     move.w charnumber(a5),d1    ;erase cursor character
  1432.     bsr printschar
  1433.     subq.w #1,charnumber(a5)
  1434.     bra samekey
  1435.  
  1436. notdel    cmpi.w #20,charnumber(a5)
  1437.     beq samekey
  1438.  
  1439.     move.l #keycodetable,a6
  1440.     move.b $00(a6,d0.w),d0    ;ascii character
  1441.     beq samekey
  1442.  
  1443.     move.l #searchstring,a3
  1444.     move.w charnumber(a5),d1
  1445.     move.b d0,$00(a3,d1.w)
  1446.     clr.w d1
  1447.     move.w charnumber(a5),d1
  1448.     bsr printschar
  1449.     addq.w #1,charnumber(a5)
  1450.     
  1451. samekey    move.b keypressed(a5),d0
  1452.     cmp.b oldkey(a5),d0
  1453.     beq.s samekey
  1454.     bra nxtchr
  1455.  
  1456. gotstring    
  1457.  
  1458.     move.l #searchstring,a3        ;null terminate string
  1459.     move.w charnumber(a5),d1
  1460.     clr.b $00(a3,d1.w)
  1461.  
  1462.     move.l #oldsearchstring,a2    ;compare with orig string
  1463.     move.l #searchstring,a4    ;if not same `old match address`
  1464. cmplp1    move.b (a2)+,d0        ;becomes irrelevant.
  1465.     beq scan_text
  1466.     cmp.b (a4)+,d0
  1467.     beq cmplp1
  1468.     clr.l old_match_address(a5)
  1469.  
  1470. scan_text:
  1471.  
  1472.     move.l start_of_section(a5),a2
  1473.     move.b (a3),d7        ;1st char
  1474.     moveq #0,d6        ;page numeber where match found 
  1475. newpage    moveq #0,d0        ;line where '' '' '' 
  1476.     move.l a2,a4        ;page top of section where '' ''
  1477.  
  1478. srchlp    move.b (a2),d2
  1479.     beq endofsearch
  1480.     cmpi.b #"A"-1,d2        ;fix chars to lower case
  1481.     bls.s nocsch
  1482.     cmpi.b #"Z",d2
  1483.     bhi.s nocsch
  1484.     add.b #32,d2
  1485. nocsch    cmp.b d7,d2
  1486.     beq.s foundchar
  1487.     cmpi.b #$a,d2
  1488.     beq.s foundcr
  1489. contsrch    addq.w #1,a2
  1490.     bra srchlp
  1491.  
  1492. foundchar
  1493.     move.l a2,a6
  1494.     move.l #searchstring,a3    ;now see if rest of string matches
  1495. compchars    addq.w #1,a6
  1496.     addq.w #1,a3
  1497.     move.b (a3),d3        ;last char of search string?
  1498.     beq foundmatch    
  1499.     move.b (a6),d2        ;Fix uppercase chars to lower
  1500.     cmpi.b #"A"-1,d2
  1501.     bls.s nocsch2
  1502.     cmpi.b #"Z",d2
  1503.     bhi.s nocsch2
  1504.     add.b #32,d2
  1505. nocsch2    cmp.b d2,d3
  1506.     bne contsrch
  1507.     bra compchars
  1508.  
  1509. foundcr    addq.w #1,d0
  1510.     cmpi.w #maxlines,d0
  1511.     bne contsrch
  1512.     addq.w #1,d6
  1513.     addq.w #1,a2
  1514.     bra newpage
  1515.  
  1516. endofsearch:
  1517.  
  1518.     tst.w did_find(a5)        ;if not matches made past original
  1519.     beq cancelsearch        ;pos just show that prev pos
  1520.     move.w nearestmatchscreen(a5),d6
  1521.     move.w nearestmatchline(a5),d0
  1522.     move.l nearestmatchpagetop(a5),a4    
  1523.     bra showfind
  1524.         
  1525. foundmatch:
  1526.  
  1527.     cmp.l current_page_top(a5),a2    ;ignore matches on previous screens
  1528.     blt contsrch
  1529.  
  1530.     move.w #1,did_find(a5)
  1531.     move.w d6,nearestmatchscreen(a5)
  1532.     move.w d0,nearestmatchline(a5)
  1533.     move.l a4,nearestmatchpagetop(a5)
  1534.  
  1535.     cmp.l old_match_address(a5),a2
  1536.     bls contsrch
  1537.     move.l a2,old_match_address(a5)
  1538.  
  1539. showfind    move.w d6,matchscreen(a5)
  1540.     cmp.l current_page_top(a5),a4
  1541.     bne.s notfsamepage
  1542.         
  1543.     lsl.w #3,d0
  1544.     add.b #$47,d0
  1545.     move.b d0,cop_hl1
  1546.     add.b #9,d0
  1547.     move.b d0,cop_hl2
  1548.  
  1549.     move.w #$0180,cop_hl1+4    ;highlight col 0
  1550.     move.w #$0180,cop_hl2+4    ;highlight col 0
  1551.     bra cancelsearch
  1552.     
  1553. notfsamepage
  1554.  
  1555.     addq.w #1,d0
  1556.     move.w d0,matchline(a5)    
  1557.     move.l a4,a1
  1558.     move.l a1,next_page_top(a5)
  1559.     move.w #1,drop_screen(a5)
  1560.     move.w #90,drop_sin_index(a5)
  1561.     move.b #$ec,cop_hl1        
  1562.     move.b #$ec,cop_hl2
  1563.  
  1564. cancelsearch:
  1565.  
  1566.     move.w #search_button,d0
  1567.     clr.w d1
  1568.     bsr blit_button
  1569.     bsr waitnewframe
  1570.     move.w #$0001,cop_scrl+2
  1571.     clr.w searchplanes_on(a5)
  1572.     bsr settextpalette
  1573.     move.l #undersearchbox,a2
  1574.     move.l #textscreen+(84*68)+28,a1
  1575.     add.w screen_offset(a5),a1
  1576.     moveq #38,d7
  1577. ylp2    moveq #12,d6
  1578. xlp2    move.w (a2)+,(a1)+
  1579.     dbf d6,xlp2
  1580.     add.w #84-26,a1
  1581.     dbf d7,ylp2    
  1582.     rts
  1583.     
  1584. notsearch:
  1585.     cmpi.b #$37,keypressed(a5)
  1586.     bne.s nopress_m
  1587.     move.w #music_button,d2    
  1588. nopress_m    cmpi.w #music_button,d2
  1589.     bne.s notmusic
  1590.     tst.w fade_music(a5)
  1591.     bne.s notmusic
  1592.     eori.w #1,music_toggle(a5)
  1593.     bne.s f_up
  1594.     move.w #$ff00,fade_music(a5)
  1595.     move.w #8,d0
  1596.     move.w #0,d1
  1597.     bsr blit_button
  1598.     bra notmusic
  1599. f_up    move.w #$0100,fade_music(a5)
  1600.     move.w #8,d0
  1601.     move.w #1,d1
  1602.     bsr blit_button
  1603.  
  1604. notmusic    rts
  1605.  
  1606.  
  1607. newtextfixed:
  1608.     
  1609.     clr.l old_match_address(a5)
  1610.     move.l d0,start_of_section(a5)
  1611.     move.l d0,next_page_top(a5)
  1612.     clr.w menu_mode(a5)
  1613.     move.w icon_lit(a5),d0
  1614.     clr.w d1
  1615.     bsr blit_button
  1616.     move.w d2,d0
  1617.     moveq #1,d1    
  1618.     bsr blit_button
  1619.     move.w #1,drop_screen(a5)
  1620.     move.w #90,drop_sin_index(a5)
  1621.     move.w d2,icon_lit(a5)
  1622.     clr.w icon_selected(a5)
  1623.     bsr waitcopirq
  1624.     move.b #$ec,cop_hl1        ;canel any match highlight bar
  1625.     move.b #$ec,cop_hl2
  1626.     rts
  1627.  
  1628.  
  1629. ;---------------------------------------------------------------------------
  1630.  
  1631. clear_main_screen
  1632.  
  1633.     movem.l a4-a6,-(a7)
  1634.     move.l #outcast_vars,a4
  1635.     move.l #$dff000,a6
  1636.     move.l #textscreen-84,a5
  1637.     move.l a5,$54(a6)        ;clear screen
  1638.     move.l #$01000000,$40(a6)
  1639.     clr.w $66(a6)
  1640.     move.w #(207*64)+42,$58(a6)
  1641.     bsr blitwait
  1642.     movem.l (a7)+,a4-a6
  1643.     rts
  1644.  
  1645. ;---------------------------------------------------------------------------
  1646.  
  1647. printschar
  1648.     movem.l a3/a4/d0,-(a7)
  1649.     move.l #textscreen+(84*93)+31,a4    ;plots char in search box
  1650.     add.w screen_offset(a5),a4
  1651.     add.w d1,a4
  1652.     move.l #smallfont,a3    
  1653.     and.w #$ff,d0
  1654.     cmpi.b #"a"-1,d0        ;ensure only capitals plotted
  1655.     bls.s nocchng
  1656.     sub.w #32,d0
  1657. nocchng    lsl.w #3,d0
  1658.     add.w d0,a3    
  1659.     move.b (a3)+,(a4)
  1660.     move.b (a3)+,stsmod(a4)
  1661.     move.b (a3)+,stsmod*2(a4)
  1662.     move.b (a3)+,stsmod*3(a4)
  1663.     move.b (a3)+,stsmod*4(a4)
  1664.     move.b (a3)+,stsmod*5(a4)
  1665.     move.b (a3)+,stsmod*6(a4)
  1666.     move.b (a3)+,stsmod*7(a4)
  1667.     movem.l (a7)+,a3/a4/d0
  1668.     rts
  1669.  
  1670. ;---------------------------------------------------------------------------
  1671.     
  1672. gen_searchbox:
  1673.  
  1674.     move.l #outcast_vars,a5
  1675.     move.w showsearchbox(a5),d1
  1676.     beq nobox
  1677.     subq.w #2,d1
  1678.     move.l #searchbox,a0
  1679.     move.l #textscreen+(84*68)+28,a1
  1680.     move.l #textplane2+(84*68)+28,a2
  1681.     add.w screen_offset(a5),a1
  1682.     add.w d1,a0
  1683.  
  1684. evenloop    cmpi.b #25,d1
  1685.     bhi.s evendone
  1686.     move.l a0,a4
  1687.     move.l a1,a6
  1688.     move.l a2,a3
  1689.     moveq #19,d7
  1690. evenlp2    move.w (a4),(a6)
  1691.     move.w 26(a4),(a3)
  1692.     lea 84*2(a3),a3
  1693.     lea 84*2(a6),a6
  1694.     lea 26*4(a4),a4
  1695.     dbf d7,evenlp2
  1696.     addq.w #2,a0
  1697.     addq.w #2,a1
  1698.     addq.w #2,a2
  1699.     addq.w #2,d1
  1700.     bra.s evenloop
  1701. evendone
  1702.  
  1703.  
  1704.     move.l #textscreen+(84*69)+28,a3
  1705.     move.l #textplane2+(84*69)+28,a2
  1706.     add.w screen_offset(a5),a3
  1707.     move.l #searchbox+(26*2),a0
  1708.     move.w showsearchbox(a5),d1
  1709.     subq.w #2,d1
  1710.     add.w d1,a3
  1711.     add.w d1,a2
  1712.  
  1713. oddloop    cmpi.b #25,d1
  1714.     bhi.s odddone
  1715.     move.l a0,a4
  1716.     move.l a2,a1
  1717.     move.l a3,a6
  1718.     moveq #18,d7
  1719. oddlp2    move.w (a4),(a6)
  1720.     move.w 26(a4),(a1)
  1721.     lea 84*2(a6),a6
  1722.     lea 84*2(a1),a1
  1723.     lea 26*4(a4),a4
  1724.     dbf d7,oddlp2
  1725.     addq.w #2,a0
  1726.     addq.w #2,a2
  1727.     addq.w #2,a3
  1728.     addq.w #2,d1
  1729.     bra.s oddloop
  1730. odddone
  1731.  
  1732.     subq.w #2,showsearchbox(a5)
  1733. nobox    rts
  1734.  
  1735. ;---------------------------------------------------------------------------
  1736.  
  1737. setboxpalette:
  1738.  
  1739.     movem.l a0-a1/d7,-(a7)
  1740.     move.l #searchboxpalette,a0
  1741.     move.l #cop_cols2+$6,a1
  1742.     moveq #6,d7
  1743. sbploop    move.w (a0)+,(a1)
  1744.     addq.w #4,a1
  1745.     dbf d7,sbploop
  1746.     movem.l (a7)+,a0-a1/d7
  1747.     rts
  1748.  
  1749. ;---------------------------------------------------------------------------
  1750.  
  1751. settextpalette:
  1752.  
  1753.     movem.l a0-a1/d7,-(a7)
  1754.     move.l #normaltextpalette,a0
  1755.     move.l #cop_cols2+$6,a1
  1756.     moveq #6,d7
  1757. sbploop2    move.w (a0)+,(a1)
  1758.     addq.w #4,a1
  1759.     dbf d7,sbploop2
  1760.     movem.l (a7)+,a0-a1/d7
  1761.     rts
  1762.     
  1763. ;---------------------------------------------------------------------------
  1764.  
  1765. setmenupalette:
  1766.  
  1767.     movem.l a0-a1/d7,-(a7)
  1768.     move.l #menupalette,a0
  1769.     move.l #cop_cols2+$6,a1
  1770.     moveq #6,d7
  1771. sbploop3    move.w (a0)+,(a1)
  1772.     addq.w #4,a1
  1773.     dbf d7,sbploop3
  1774.     movem.l (a7)+,a0-a1/d7
  1775.     rts
  1776.     
  1777. ;---------------------------------------------------------------------------
  1778.  
  1779. blitwait    btst #6,$2(a6)
  1780.     bne.s blitwait
  1781.     rts    
  1782.  
  1783. ;---------------------------------------------------------------------------
  1784.  
  1785. waitnewframe
  1786.  
  1787.     move.l a5,-(a7)
  1788.     move.l #outcast_vars,a5
  1789. waiting    tst.w newframe(a5)
  1790.     beq.s waiting
  1791.     clr.w newframe(a5)
  1792.     move.l (a7)+,a5
  1793.     rts
  1794.  
  1795. ;---------------------------------------------------------------------------
  1796.  
  1797. waitcopirq
  1798.  
  1799.     move.l a5,-(a7)
  1800.     move.l #outcast_vars,a5
  1801.     clr.w copirq_occured(a5)
  1802. waiting2    tst.w copirq_occured(a5)
  1803.     beq.s waiting2
  1804.     clr.w copirq_occured(a5)
  1805.     move.l (a7)+,a5
  1806.     rts
  1807.     
  1808. ;---------------------------------------------------------------------------
  1809.  
  1810. underboxstore
  1811.     
  1812.     movem.l a2/a1/d6/d7,-(a7)
  1813.     move.l #undersearchbox,a2
  1814.     move.l #textscreen+(84*68)+28,a1
  1815.     add.w screen_offset(a5),a1
  1816.     moveq #38,d7
  1817. ylp3    moveq #12,d6
  1818. xlp3    move.w (a1)+,(a2)+
  1819.     dbf d6,xlp3
  1820.     add.w #84-26,a1
  1821.     dbf d7,ylp3    
  1822.     movem.l (a7)+,a2/a1/d6/d7
  1823.     rts
  1824.     
  1825. ;---------------------------------------------------------------------------
  1826.  
  1827. music_fader:
  1828.  
  1829.     move.l #outcast_vars,a5
  1830.     move.w fade_music(a5),d0
  1831.     add.w d0,mt_volscale
  1832.     tst.w mt_volscale
  1833.     bpl.s botvolok
  1834.     clr.w mt_volscale
  1835.     clr.w fade_music(a5)
  1836.     bra topvolok
  1837. botvolok    cmpi.w #$3fff,mt_volscale
  1838.     bls.s topvolok
  1839.     move.w #$4000,mt_volscale
  1840.     clr.w fade_music(a5)
  1841. topvolok    rts
  1842.  
  1843.     
  1844. ;---------------------------------------------------------------------------
  1845.  
  1846. search_bitplane_fix
  1847.  
  1848.     move.l #outcast_vars,a5
  1849.     move.l #$dff000,a6
  1850.     move.l #$00000000,$44(a6)
  1851.     clr.l $64(a6)
  1852.     clr.w $62(a6)
  1853.     move.l #$2d300000,$40(a6)
  1854.     move.l #textscreen,a1
  1855.     add.w screen_offset(a5),a1
  1856.     move.l a1,$4c(a6)            ;b source
  1857.     sub.w #84,a1
  1858.     move.l a1,$50(a6)            ;a source
  1859.     move.l #textplane2,$54(a6)        ;d dest
  1860.     move.w #(166*64)+42,$58(a6)
  1861.     bsr blitwait
  1862.     
  1863.     move.w #1,searchplanes_on(a5)
  1864.     move.l #textplane2+2,d0
  1865.     move.l #cop_bpl2,a0
  1866.     move.w d0,$6(a0)
  1867.     swap d0
  1868.     move.w d0,$2(a0)
  1869.     clr.w cop_scrl+2
  1870.     rts
  1871.     
  1872.     
  1873. ;---------------------------------------------------------------------------
  1874.  
  1875. fade_out_routine
  1876.  
  1877.     move.l d0,-(a7)            
  1878. fadeoloop    tst.b (a5)    ;fade a copper palette at a5 to black
  1879.     beq.s reddown    ;d7 = number of colours to fade - 1
  1880.     subq.b #1,(a5)
  1881. reddown    move.b $1(a5),d0
  1882.     andi.b #$f0,d0
  1883.     beq.s greendown
  1884.     sub.b #$10,$1(a5)
  1885. greendown    move.b $1(a5),d0
  1886.     andi.b #$0f,d0
  1887.     beq.s bluedown
  1888.     subq.b #$1,$1(a5)
  1889. bluedown    addq.w #4,a5
  1890.     dbf d7,fadeoloop
  1891.     move.l (a7)+,d0
  1892.     rts
  1893.     
  1894. ;---------------------------------------------------------------------------
  1895.  
  1896. fade_in_routine
  1897.  
  1898.     movem.l d0/d1,-(a7)            
  1899. fadeiloop    move.b (a6),d0    ;fade up a copper palette at a5 to match 
  1900.     cmp.b (a5),d0    ;palette words at a6
  1901.     beq.s reddup    ;d7 = number of colours to fade up 
  1902.     addq.b #1,(a5)
  1903.  
  1904. reddup    move.b $1(a6),d0
  1905.     andi.b #$f0,d0
  1906.     move.b $1(a5),d1
  1907.     andi.b #$f0,d1
  1908.     cmp.b d0,d1
  1909.     beq.s greenup
  1910.     add.b #$10,$1(a5)
  1911.  
  1912. greenup    move.b $1(a6),d0
  1913.     andi.b #$f,d0
  1914.     move.b $1(a5),d1
  1915.     andi.b #$f,d1
  1916.     cmp.b d0,d1
  1917.     beq.s blueup
  1918.     addq.b #$1,$1(a5)
  1919.  
  1920. blueup    addq.w #4,a5
  1921.     addq.w #2,a6
  1922.     dbf d7,fadeiloop
  1923.     movem.l (a7)+,d0/d1
  1924.     rts
  1925.  
  1926. ;---------------------------------------------------------------------------
  1927.  
  1928. screen_fades:
  1929.  
  1930.     move.l #outcast_vars,a0
  1931.     tst.w fade_in_all(a0)
  1932.     beq nofia
  1933.     subq.w #1,fade_in_all(a0)
  1934.     btst #0,fade_in_all+1(a0)
  1935.     beq nofia
  1936.     move.l #cop_cols1+2,a5
  1937.     move.l #bdrpalette,a6
  1938.     moveq #15,d7
  1939.     bsr fade_in_routine
  1940.     move.l #cop_pcols+2,a5
  1941.     move.l #pointerpalette,a6
  1942.     moveq #15,d7
  1943.     bsr fade_in_routine
  1944.     move.l #cop_cols3+2,a5
  1945.     move.l #bdrpalette,a6
  1946.     moveq #15,d7
  1947.     bsr fade_in_routine
  1948.     move.l #cop_cols2+6,a5
  1949.     move.l #normaltextpalette,a6
  1950.     moveq #6,d7
  1951.     bsr fade_in_routine
  1952.     rts
  1953.  
  1954. nofia    tst.w fade_out_all(a0)
  1955.     beq nofoa
  1956.     subq.w #1,fade_out_all(a0)
  1957.     bne.s noquit
  1958.     move.w #1,quit(a0)
  1959. noquit    btst #0,fade_out_all+1(a0)
  1960.     beq nofia
  1961.     move.l #cop_cols1+2,a5
  1962.     moveq #15,d7
  1963.     bsr fade_out_routine
  1964.     move.l #cop_pcols+2,a5
  1965.     moveq #15,d7
  1966.     bsr fade_out_routine
  1967.     move.l #cop_cols3+2,a5
  1968.     moveq #15,d7
  1969.     bsr fade_out_routine
  1970.     move.l #cop_cols2+6,a5
  1971.     moveq #6,d7
  1972.     bsr fade_out_routine
  1973.     move.l #cop_bcols+6,a5
  1974.     moveq #31,d6
  1975. cbf_loop    moveq #0,d7
  1976.     bsr fade_out_routine
  1977.     add.w #$10,a5
  1978.     dbf d6,cbf_loop
  1979. nofoa    rts
  1980.  
  1981. ;---------------------------------------------------------------------------
  1982.  
  1983. fadeloadpicin:
  1984.  
  1985.     btst #0,fadelpi+1(a5)
  1986.     beq.s nfpi
  1987.     move.l #loadingpicpalette,a6
  1988.     move.l #lpcols1+2,a5
  1989.     moveq #15,d7
  1990.     bsr fade_in_routine
  1991.     move.l #loadingpicpalette,a6
  1992.     move.l #lpcols2+2,a5
  1993.     moveq #15,d7
  1994.     bsr fade_in_routine
  1995. nfpi    rts
  1996.  
  1997. ;---------------------------------------------------------------------------
  1998.  
  1999. ExecBase        =    4
  2000. OpenLibrary    =    -408
  2001. CloseLibrary    =    -414
  2002. Execute        =    -222
  2003.  
  2004.  
  2005. Loadexe:    Lea     DosName,a1
  2006.     Clr.l    d0
  2007.     Move.l    ExecBase,a6
  2008.     Jsr    OpenLibrary(A6)
  2009.     Move.l    D0,DosBase
  2010.     Move.l    FileName,D1
  2011.     Clr.l    D2
  2012.     Clr.l    D3
  2013.     Move.l    DosBase,a6
  2014.     Jsr    Execute(A6)    
  2015.     clr.l    d0
  2016.  
  2017. CloseDos:    Move.l    ExecBase,a6
  2018.     Move.l    DosBase,a1
  2019.     Jsr    CloseLibrary(A6)
  2020.     Rts
  2021.  
  2022. DosName:    Dc.b    'dos.library',0
  2023.     Even
  2024. DosBase:    dc.l    0
  2025. Filename    dc.l      0
  2026.  
  2027. ;---------------------------------------------------------------------------    
  2028.  
  2029. drawinitpage:
  2030.  
  2031. lineoneoffset equ 6
  2032.  
  2033.     move.l #initpagebanner,a1
  2034.     move.l #textscreen+2,a0
  2035.     bsr make_text_screen
  2036.  
  2037.     move.l #textscreen+2,plot_screen
  2038.     move.w #modulo,total_modulo
  2039.     move.w #0,use_font
  2040.     move.l #font_list,a1
  2041.     move.w use_font,d3
  2042.     mulu #3*4,d3
  2043.     move.l 0(a1,d3.w),a2
  2044.     move.w $2(a2),d2        ;height of this font
  2045.     add.w #y_line_spacing,d2
  2046.     move.l 8(a1,d3.w),a2
  2047.     sub.w #128,a2        ;char width list
  2048.     move.w #lineoneoffset,plotypos
  2049.     move.l #initpagetext,a0
  2050.     move.l a0,a3
  2051. nxtfpln    bsr findpixlength
  2052.     lsr.w #1,d1
  2053.     move.w #x_centre,d0
  2054.     sub.w d1,d0
  2055.     move.w d0,plotxpos
  2056.     bsr type_text
  2057.     add.w d2,plotypos
  2058.     cmpi.b #"@",(a3)
  2059.     bne nxtfpln
  2060.     rts
  2061.     
  2062. ;---------------------------------------------------------------------------    
  2063.  
  2064.     include includes/dotplot_routine_c.src
  2065.  
  2066. ;---------------------------------------------------------------------------
  2067.  
  2068. *****************************************************************************
  2069.  
  2070.     include includes/pt-play+volscale.src
  2071.     
  2072. *****************************************************************************
  2073.  
  2074.     section datastuff,data
  2075.  
  2076. ;---------------------------------------------------------------------------
  2077.  
  2078.     
  2079. outcast_vars:
  2080.     
  2081.     dcb.w $40,0
  2082.  
  2083. button_unselected_addrs:
  2084.  
  2085.     dc.l button1u,button2u,button3u,button4u,button5u,button6u
  2086.     dc.l button7u,button8u,button9u
  2087.  
  2088. button_selected_addrs:
  2089.  
  2090.     dc.l button1s,button2s,button3s,button4s,button5s,button6s
  2091.     dc.l button7s,button8s,button9s
  2092.  
  2093. buttonsizes_and_positions:
  2094.  
  2095. *       size: x/y | plotpos x/y
  2096.  
  2097.     dc.w 48,24,54,26
  2098.     dc.w 32,50,103,11
  2099.     dc.w 96,20,119,7
  2100.     dc.w 80,18,124,27
  2101.     dc.w 64,17,130,45
  2102.     dc.w 32,50,187,12
  2103.     dc.w 48,24,232,26
  2104.     dc.w 32,15,279,26
  2105.     dc.w 32,16,279,41
  2106.  
  2107. bdrpalette:    
  2108.  
  2109.     include data/borderpalette.src
  2110.  
  2111. searchbox:
  2112.  
  2113.     incbin data/searchbox208x39x2b.raw
  2114.  
  2115. smallfont:
  2116.     dcb.b 32*8,0
  2117.     incbin data/font6.bin
  2118.     dcb.b 32*8,0
  2119.     incbin data/chars160-255.bin
  2120.     even
  2121.  
  2122. ;---------------------------------------------------------------------------
  2123.  
  2124. Intros_banner:
  2125.  
  2126.     incbin text/intro_menu_banner.txt
  2127.     dc.b 0
  2128.     even
  2129.     
  2130. Intros_text:
  2131.     incbin text/intro_list.txt
  2132.     dc.b 0
  2133.     even
  2134.  
  2135. ;---------------------------------------------------------------------------
  2136. ************* FILELENGTH OF BANNERS MUST BE AN EVEN NUMBER!! ***************
  2137. ;---------------------------------------------------------------------------
  2138.     dc.b $0,$a        ;MUST PROCEED TEXT FILE
  2139. MESSAGES:    incbin text/messages_banner.txt
  2140.     incbin text/messages.txt
  2141.     dc.b 0,0,0,0        ;MUST FOLLOW TEXT FILE
  2142.     even
  2143. ;---------------------------------------------------------------------------
  2144.     dc.b $0,$a        ;MUST PROCEED TEXT FILE
  2145. ADVERTS:    incbin text/adverts_banner.txt
  2146.     incbin text/adverts.txt
  2147.     dc.b 0,0,0,0        ;MUST FOLLOW TEXT FILE
  2148.     even
  2149. ;---------------------------------------------------------------------------
  2150.     dc.b $0,$a        ;MUST PROCEED TEXT FILE
  2151. NEWS:    incbin text/news_banner.txt
  2152.     incbin text/news.txt
  2153.     dc.b 0,0,0,0        ;MUST FOLLOW TEXT FILE
  2154.     even
  2155. ;---------------------------------------------------------------------------
  2156.     dc.b $0,$a        ;MUST PROCEED TEXT FILE
  2157. INFO:    incbin text/info_banner.txt
  2158.     incbin text/info.txt
  2159.     dc.b 0,0,0,0        ;MUST FOLLOW TEXT FILE
  2160.     even
  2161. ;---------------------------------------------------------------------------
  2162.  
  2163. initpagetext:    incbin text/firstpagetext.txt
  2164.         even
  2165. initpagebanner:    incbin text/firstpagebanner.txt
  2166.         dc.b 0
  2167.         even
  2168. ;---------------------------------------------------------------------------
  2169.  
  2170. Sinetable:    incbin data/sin-costable.data
  2171.  
  2172. Keycodetable:    incbin data/keycode-ascii.table
  2173.  
  2174. Searchstring:    dcb.b 32,0
  2175. OldSearchstring:    dcb.b 32,0
  2176.         even
  2177.  
  2178. ;----------------------------------------------------------------------------
  2179.  
  2180. textshadow_col     equ $0824
  2181. menushadow_col     equ $0824
  2182. dots_col         equ $0957
  2183. sbcol         equ $0957    ;Select bar colour
  2184.         
  2185. searchboxpalette:
  2186.  
  2187.     dc.w    dots_col
  2188.     dc.w    $0fff
  2189.     dc.w    $0fff        ;text+dots
  2190.     dc.w     textshadow_col    
  2191.     dc.w     textshadow_col    ;text shadow+dots
  2192.     dc.w     $0745        ;box colour
  2193.     dc.w     $0745        ;box+dots
  2194.     dc.w     $0fff
  2195.     
  2196. normaltextpalette:
  2197.         
  2198.     dc.w    dots_col
  2199.     dc.w    $0fff
  2200.     dc.w    $0fff
  2201.     dc.w     textshadow_col
  2202.     dc.w     textshadow_col
  2203.     dc.w     $0fff
  2204.     dc.w     $0fff
  2205.     dc.w     $0fff
  2206.  
  2207. menupalette:
  2208.  
  2209.     dc.w     dots_col
  2210.     dc.w     $0fff
  2211.     dc.w     $0fff    
  2212.     dc.w     menushadow_col
  2213.     dc.w     dots_col
  2214.     dc.w     $0fff
  2215.     dc.w     $0fff
  2216.     dc.w      $0fff
  2217.  
  2218. pointerpalette:
  2219.  
  2220.     dc.w    $0000
  2221.     dc.w    $0FFF
  2222.     dc.w    $0FEE
  2223.     dc.w    $0EDD
  2224.     dc.w    $0DBB
  2225.     dc.w    $0DAB
  2226.     dc.w    $0B89
  2227.     dc.w    $0A78
  2228.     dc.w    $0967
  2229.     dc.w    $0856
  2230.     dc.w    $0745
  2231.     dc.w    $0634
  2232.     dc.w    $0533
  2233.     dc.w    $0422
  2234.     dc.w    $0312
  2235.     dc.w    $0211
  2236.  
  2237.  
  2238. loadingpicpalette:
  2239.     
  2240.     dc.w    $0000
  2241.     dc.w    $0EEE
  2242.     dc.w    $0013
  2243.     dc.w    $0023
  2244.     dc.w    $0024
  2245.     dc.w    $0135
  2246.     dc.w    $0246
  2247.     dc.w    $0247
  2248.     dc.w    $0358
  2249.     dc.w    $0468
  2250.     dc.w    $0679
  2251.     dc.w    $078A
  2252.     dc.w    $08AB
  2253.     dc.w    $0ABC
  2254.     dc.w    $0CCD
  2255.     dc.w    $0DDD
  2256.  
  2257. ;---------------------------------------------------------------------------
  2258.  
  2259. filenames:
  2260.  
  2261. fn0    dc.b "NEO->OUTCAST<-NEO:0",0
  2262. fn1    dc.b "NEO->OUTCAST<-NEO:1",0
  2263. fn2    dc.b "NEO->OUTCAST<-NEO:2",0
  2264. fn3    dc.b "NEO->OUTCAST<-NEO:3",0
  2265. fn4    dc.b "NEO->OUTCAST<-NEO:4",0
  2266. fn5    dc.b "NEO->OUTCAST<-NEO:5",0
  2267. fn6    dc.b "NEO->OUTCAST<-NEO:6",0
  2268. fn7    dc.b "NEO->OUTCAST<-NEO:7",0
  2269. fn8    dc.b "NEO->OUTCAST<-NEO:8",0
  2270. fn9    dc.b "NEO->OUTCAST<-NEO:9",0
  2271.     even
  2272.  
  2273. fn_addrs    dc.l fn0,fn1,fn2,fn3,fn4,fn5,fn6,fn7,fn8,fn9
  2274.  
  2275. ;---------------------------------------------------------------------------
  2276.  
  2277.     include includes/dotplot_nonchipdata.src
  2278.  
  2279. ;---------------------------------------------------------------------------
  2280.     section chipstuff,data_c
  2281. ;---------------------------------------------------------------------------
  2282.  
  2283. copper    dc.l $0101ff00,$01004200,$01020000,$01040024
  2284.     dc.l $008e2c81,$00902cc1,$00920038,$009400d0
  2285.     dc.l $01080078,$010a0078,$01fc0000,$01060000
  2286.  
  2287. cop_spr    dc.l $01200000,$01220000,$01240000,$01260000
  2288.     dc.l $01280000,$012a0000,$012c0000,$012e0000
  2289.     dc.l $01300000,$01320000,$01340000,$01360000
  2290.     dc.l $01380000,$013a0000,$013c0000,$013e0000
  2291.  
  2292. cop_bpls1    dc.l $00e00000,$00e20000,$00e40000,$00e60000
  2293.     dc.l $00e80000,$00ea0000,$00ec0000,$00ee0000
  2294.  
  2295. cop_cols1    dc.l $01800000,$01820000,$01840000,$01860000
  2296.     dc.l $01880000,$018A0000,$018C0000,$018E0000
  2297.     dc.l $01900000,$01920000,$01940000,$01960000
  2298.     dc.l $01980000,$019A0000,$019C0000,$019E0000
  2299.  
  2300. cop_pcols    dc.l $01a00000,$01a20000,$01a40000,$01a60000
  2301.     dc.l $01a80000,$01aa0000,$01ac0000,$01ae0000
  2302.     dc.l $01b00000,$01b20000,$01b40000,$01b60000
  2303.     dc.l $01b80000,$01ba0000,$01bc0000,$01be0000
  2304.     
  2305. ;--------------------------------------------------------------------------
  2306.  
  2307.     dc.l $4601ff00,$01000000
  2308. dot_bpln    dc.l $00e00000,$00e20000
  2309.     dc.l $4701ff00,$01009200
  2310.  
  2311. cop_scrl    dc.l $01020001,$01040024,$01fc0000,$01060000
  2312.     dc.l $008e2c81,$00902cc1,$0092003c,$009400d4
  2313.     dc.l $01080004,$010a0004
  2314.  
  2315. cop_bpl1    dc.l $00e40000,$00e60000
  2316. cop_bpl2    dc.l $00e80000,$00ea0000
  2317.     
  2318. cop_cols2    dc.w $0180,$0000
  2319.     dc.w $0182,$0000
  2320.     dc.w $0184,$0000
  2321.     dc.w $0186,$0000
  2322.     dc.w $0188,$0000
  2323.     dc.w $018a,$0000
  2324.     dc.w $018c,$0000
  2325.     dc.w $018e,$0000
  2326.  
  2327. cop_tstrt    dc.l $4801ff00,$0100b200    ;<- Blanked by drop screen if ness
  2328.  
  2329. cop_skpln    dc.l $00800000,$00820000    ;Copper branch address
  2330. cop_doskp    dc.l $00880000        ;00880000 = branch 01fe0000 = not
  2331.  
  2332. copper_rtn
  2333.  
  2334. cop_hl1    dc.l $ec01ff00,$01840745
  2335. cop_hl2    dc.l $ec01ff00,$01840000
  2336.     
  2337. ;---------------------------------------------------------------------------
  2338.  
  2339.     dc.l $ed01ff00,$01000000
  2340.  
  2341. cop_bpls3    dc.l $00e00000,$00e20000,$00e40000,$00e60000
  2342.     dc.l $00e80000,$00ea0000,$00ec0000,$00ee0000
  2343.  
  2344.     dc.l $01020000,$01040024
  2345.     dc.l $008e2c81,$00902cc1,$00920038,$009400d0
  2346.     dc.l $01080078,$010a0078,$01fc0000,$01060000
  2347.  
  2348. cop_cols3    dc.l $01800000,$01820000,$01840000,$01860000
  2349.     dc.l $01880000,$018A0000,$018C0000,$018E0000
  2350.     dc.l $01900000,$01920000,$01940000,$01960000
  2351.     dc.l $01980000,$019A0000,$019C0000,$019E0000
  2352.  
  2353.     dc.l $ee01ff00,$01004200
  2354.  
  2355.     dc.l $ffdffffe,$0e01ff00
  2356.     dc.l $009c8010
  2357.     
  2358. cop_rstrt    dc.l $00800000,$00820000,$fffffffe
  2359.     
  2360. ;---------------------------------------------------------------------------
  2361.  
  2362. copper_bar
  2363.  
  2364.     dc.l $00800000,$00820000
  2365.  
  2366. cop_bcols    dc.w $7045,$fffe,$0180,sbcol,$70cd,$fffe,$0180,$0000,$01fe,$0000
  2367.     dc.w $7145,$fffe,$0180,sbcol,$71cd,$fffe,$0180,$0000,$01fe,$0000
  2368.     dc.w $7245,$fffe,$0180,sbcol,$72cd,$fffe,$0180,$0000,$01fe,$0000
  2369.     dc.w $7345,$fffe,$0180,sbcol,$73cd,$fffe,$0180,$0000,$01fe,$0000
  2370.     dc.w $7445,$fffe,$0180,sbcol,$74cd,$fffe,$0180,$0000,$01fe,$0000
  2371.     dc.w $7545,$fffe,$0180,sbcol,$75cd,$fffe,$0180,$0000,$01fe,$0000
  2372.     dc.w $7645,$fffe,$0180,sbcol,$76cd,$fffe,$0180,$0000,$01fe,$0000
  2373.     dc.w $7745,$fffe,$0180,sbcol,$77cd,$fffe,$0180,$0000,$01fe,$0000
  2374.     dc.w $7845,$fffe,$0180,sbcol,$78cd,$fffe,$0180,$0000,$01fe,$0000
  2375.     dc.w $7945,$fffe,$0180,sbcol,$79cd,$fffe,$0180,$0000,$01fe,$0000
  2376.     dc.w $7a45,$fffe,$0180,sbcol,$7acd,$fffe,$0180,$0000,$01fe,$0000
  2377.     dc.w $7b45,$fffe,$0180,sbcol,$7bcd,$fffe,$0180,$0000,$01fe,$0000
  2378.     dc.w $7c45,$fffe,$0180,sbcol,$7ccd,$fffe,$0180,$0000,$01fe,$0000
  2379.     dc.w $7d45,$fffe,$0180,sbcol,$7dcd,$fffe,$0180,$0000,$01fe,$0000
  2380.     dc.w $7e45,$fffe,$0180,sbcol,$7ecd,$fffe,$0180,$0000,$01fe,$0000
  2381.     dc.w $7f45,$fffe,$0180,sbcol,$7fcd,$fffe,$0180,$0000,$01fe,$0000
  2382.     dc.w $8045,$fffe,$0180,sbcol,$80cd,$fffe,$0180,$0000,$01fe,$0000
  2383.     dc.w $8145,$fffe,$0180,sbcol,$81cd,$fffe,$0180,$0000,$01fe,$0000
  2384.     dc.w $8245,$fffe,$0180,sbcol,$82cd,$fffe,$0180,$0000,$01fe,$0000
  2385.     dc.w $8345,$fffe,$0180,sbcol,$83cd,$fffe,$0180,$0000,$01fe,$0000
  2386.     dc.w $8445,$fffe,$0180,sbcol,$84cd,$fffe,$0180,$0000,$01fe,$0000
  2387.     dc.w $8545,$fffe,$0180,sbcol,$85cd,$fffe,$0180,$0000,$01fe,$0000
  2388.     dc.w $8645,$fffe,$0180,sbcol,$86cd,$fffe,$0180,$0000,$01fe,$0000
  2389.     dc.w $8745,$fffe,$0180,sbcol,$87cd,$fffe,$0180,$0000,$01fe,$0000
  2390.     dc.w $8845,$fffe,$0180,sbcol,$88cd,$fffe,$0180,$0000,$01fe,$0000
  2391.     dc.w $8945,$fffe,$0180,sbcol,$89cd,$fffe,$0180,$0000,$01fe,$0000
  2392.     dc.w $8a45,$fffe,$0180,sbcol,$8acd,$fffe,$0180,$0000,$01fe,$0000
  2393.     dc.w $8b45,$fffe,$0180,sbcol,$8bcd,$fffe,$0180,$0000,$01fe,$0000
  2394.     dc.w $8c45,$fffe,$0180,sbcol,$8ccd,$fffe,$0180,$0000,$01fe,$0000
  2395.     dc.w $8d45,$fffe,$0180,sbcol,$8dcd,$fffe,$0180,$0000,$01fe,$0000
  2396.     dc.w $8e45,$fffe,$0180,sbcol,$8ecd,$fffe,$0180,$0000,$01fe,$0000
  2397.     dc.w $8f45,$fffe,$0180,sbcol,$8fcd,$fffe,$0180,$0000,$0088,$0000
  2398.  
  2399.     
  2400. ;---------------------------------------------------------------------------
  2401.  
  2402. loadingpiccopper1
  2403.  
  2404.     dc.l $0101ff00,$0100c204,$01020000,$01040024
  2405.     dc.l $008e68a1,$0090efa1,$0092004c,$009400c4
  2406.  
  2407.     dc.l $01200000,$01220000,$01240000,$01260000
  2408.     dc.l $01280000,$012a0000,$012c0000,$012e0000
  2409.     dc.l $01300000,$01320000,$01340000,$01360000
  2410.     dc.l $01380000,$013a0000,$013c0000,$013e0000
  2411.  
  2412. lpbpls1    dc.l $00e00000,$00e20000,$00e40000,$00e60000
  2413.     dc.l $00e80000,$00ea0000,$00ec0000,$00ee0000
  2414.  
  2415. lpcols1    dc.l $01800000,$01820000,$01840000,$01860000
  2416.     dc.l $01880000,$018A0000,$018C0000,$018E0000
  2417.     dc.l $01900000,$01920000,$01940000,$01960000
  2418.     dc.l $01980000,$019A0000,$019C0000,$019E0000
  2419.     dc.l $010801c0,$010a01c0
  2420.  
  2421. lpswap1    dc.l $00800000,$00820000,$fffffffe
  2422.  
  2423.  
  2424. loadingpiccopper2
  2425.  
  2426.     dc.l $0101ff00,$0100c204,$01020000,$01040024
  2427.     dc.l $008e68a1,$0090efa1,$0092004c,$009400c4
  2428.  
  2429.     dc.l $01200000,$01220000,$01240000,$01260000
  2430.     dc.l $01280000,$012a0000,$012c0000,$012e0000
  2431.     dc.l $01300000,$01320000,$01340000,$01360000
  2432.     dc.l $01380000,$013a0000,$013c0000,$013e0000
  2433.  
  2434. lpbpls2    dc.l $00e00000,$00e20000,$00e40000,$00e60000
  2435.     dc.l $00e80000,$00ea0000,$00ec0000,$00ee0000
  2436.  
  2437. lpcols2    dc.l $01800000,$01820000,$01840000,$01860000
  2438.     dc.l $01880000,$018A0000,$018C0000,$018E0000
  2439.     dc.l $01900000,$01920000,$01940000,$01960000
  2440.     dc.l $01980000,$019A0000,$019C0000,$019E0000
  2441.     dc.l $010801c0,$010a01c0
  2442.  
  2443. lpswap2    dc.l $00800000,$00820000,$fffffffe
  2444.  
  2445.  
  2446. *****************************************************************************
  2447.  
  2448. lacesynccopper:
  2449.  
  2450.     dc.l $0101ff00,$01000204,$01020000,$01040024
  2451.     dc.l $fffffffe
  2452.  
  2453. *****************************************************************************
  2454.  
  2455.  
  2456.  
  2457.  
  2458. pointersprite:
  2459.  
  2460. spr1:    dc.w    $0000,$0000
  2461.     dc.w    $E000,$3000
  2462.     dc.w    $9800,$EC00
  2463.     dc.w    $6600,$BB00
  2464.     dc.w    $D980,$5EC0
  2465.     dc.w    $2E60,$4FB0
  2466.     dc.w    $6A18,$2A6C
  2467.     dc.w    $11C6,$201B
  2468.     dc.w    $3EB8,$114C
  2469.     dc.w    $0514,$1AFE
  2470.     dc.w    $184C,$0FFD
  2471.     dc.w    $012D,$0FFE
  2472.     dc.w    $0CF2,$06F4
  2473.     dc.w    $0264,$0768
  2474.     dc.w    $0508,$0090
  2475.     dc.w    $0090,$0260
  2476.     dc.w    $0260,$0040
  2477.     dc.w    $0040,$0000
  2478.     dc.w    $0000,$0000
  2479.  
  2480. spr2:    dc.w    $0000,$0080
  2481.     dc.w    $E000,$1000
  2482.     dc.w    $9800,$0400
  2483.     dc.w    $4600,$8100
  2484.     dc.w    $E180,$8040
  2485.     dc.w    $3060,$4010
  2486.     dc.w    $7598,$4004
  2487.     dc.w    $1FE6,$2001
  2488.     dc.w    $3FF8,$2004
  2489.     dc.w    $0FEC,$1002
  2490.     dc.w    $1FF4,$1003
  2491.     dc.w    $07F9,$0803
  2492.     dc.w    $0EF2,$090E
  2493.     dc.w    $0264,$059C
  2494.     dc.w    $0508,$07F8
  2495.     dc.w    $0090,$02F0
  2496.     dc.w    $0220,$0260
  2497.     dc.w    $0040,$0040
  2498.     dc.w    $0000,$0000
  2499.  
  2500. ;---------------------------------------------------------------------------
  2501.  
  2502. topborder:    incbin data/topborder320x28.raw        
  2503.  
  2504. bottomborder:    incbin data/bottomborder320x62.raw
  2505.  
  2506. buttonsensemask:    incbin data/iconsensemask_160x31x4.rawblit
  2507.  
  2508. undersearchbox:    dcb.b (208/8)*39,0
  2509.  
  2510. button1u    incbin data/leftarrow_48x24selected.raw
  2511. button1s    incbin data/leftarrow_48x24unselected.raw
  2512.  
  2513. button2u    incbin data/menu_32x50unselected.raw
  2514. button2s    incbin data/menu_32x50selected.raw
  2515.  
  2516. button3u    incbin data/messages_96x20unselected.raw
  2517. button3s    incbin data/messages_96x20selected.raw
  2518.  
  2519. button4u    incbin data/adverts_80x18unselected.raw
  2520. button4s    incbin data/adverts_80x18selected.raw
  2521.  
  2522. button5u    incbin data/news_64x17unselected.raw
  2523. button5s    incbin data/news_64x17selected.raw
  2524.  
  2525. button6u    incbin data/info_32x50unselected.raw
  2526. button6s    incbin data/info_32x50selected.raw
  2527.  
  2528. button7u    incbin data/rightarrow_48x24selected.raw
  2529. button7s    incbin data/rightarrow_48x24unselected.raw
  2530.  
  2531. button8u    incbin data/music_32x15unselected.raw
  2532. button8s    incbin data/music_32x15selected.raw
  2533.  
  2534. button9u    incbin data/search_32x16unselected.raw
  2535. button9s    incbin data/search_32x16selected.raw
  2536.  
  2537. *----------------------------------------------------------------------------
  2538.  
  2539. mask_list    dc.w $ffff,$7fff,$3fff,$1fff,$0fff,$07ff,$03ff,$01ff
  2540.     dc.w $00ff,$007f,$003f,$001f,$000f,$0007,$0003,$0001
  2541.     dc.w $0000,$8000,$c000,$e000,$f000,$f800,$fc00,$fe00
  2542.     dc.w $ff00,$ff80,$ffc0,$ffe0,$fff0,$fff8,$fffc,$fffe
  2543. mask_line    dc.w $ffff,$ffff,$ffff,$ffff,$ffff,$ffff,$ffff,$ffff
  2544.     dc.w $ffff,$ffff,$ffff,$ffff,$ffff,$ffff,$ffff,$0000
  2545. *----------------------------------------------------------------------------
  2546.         
  2547. plotxpos        dc.w 0
  2548. plotypos      dc.w 0
  2549. char_spacing    dc.w 0
  2550. total_modulo    dc.w 40
  2551. plot_screen    dc.l 0
  2552. use_font        dc.w 0
  2553.  
  2554. FONT_LIST    
  2555.     dc.l fnt_data0,fnt_ord0,fnt_pos0
  2556. *    dc.l fnt_data1,fnt_ord1,fnt_pos1
  2557. *    dc.l fnt_data2,fnt_ord2,fnt_pos2    ;uncomment as applic...
  2558. *    dc.l fnt_data3,fnt_ord3,fnt_pos3    ;uncomment as applic...
  2559.  
  2560.     dc.l $0    ;= NO MORE FONTS!
  2561.  
  2562. *(FOR EACH FONT)-------------------------------------------------------------
  2563.  
  2564. fnt_data0    dc.w 832/8;width in bytes
  2565.     dc.w 13    ;height (excluding extra 'dot-line')
  2566.  
  2567.     incbin data/fontdata832x13.raw    ;actual raw font
  2568.     dc.w $ffff            ;in case of missing last dot
  2569.  
  2570. fnt_ord0    dc.b " !",$22,"$%^&*()_-+=\/<>.,@#:;{}[]","'","?" ;In same order as raw font
  2571.     dc.b "abcdefghijklmnopqrstuvwxyz"
  2572.     dc.b "ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890"
  2573.     dc.b $00                ;Null terminated.
  2574.     even
  2575.  
  2576.     dcb.b 128,0
  2577. fnt_pos0    dcb.w 128,0
  2578.  
  2579. *----------------------------------------------------------------------------
  2580.     dcb.b 84,0
  2581.  
  2582. textscreen:
  2583.  
  2584.     dcb.l ((672/8)*(166+60))/4,0    ;text+scroll buffer (enough for 60
  2585.                 ;pages
  2586. textplane2:
  2587.  
  2588.     dcb.l (((672/8)*166)/4),0
  2589.  
  2590. *----------------------------------------------------------------------------
  2591.  
  2592.         include includes/dotplot_chipdata.src
  2593.  
  2594. *----------------------------------------------------------------------------
  2595.  
  2596. outcastscreen:    incbin data/outcastlogo511x272.raw
  2597.  
  2598. *----------------------------------------------------------------------------
  2599.  
  2600.  
  2601. *****************************************************************************
  2602.  
  2603. PACK_NUMBER equ     $01
  2604.  
  2605. mt_data:    incbin     "music/mod.outcast"
  2606.  
  2607. *****************************************************************************
  2608.